兰州人 发表于 2007-2-2 16:15:00

数据记录和实体对应的惟一性,所具备的SQL知识!

<p>AUTOCAD二次开发的14.5 章节</p><p>编程思路是 1 ObjectID、Handle和对象本身 2 记录和实体对应的惟一性</p><p>效果示例见:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=57835</p><p>数据记录相关的数据库应掌握如下要点</p><p>1 Access应用程序对应的对象库和创建方法</p><p>&nbsp;&nbsp;&nbsp; &nbsp;Ms Access 2000&nbsp;&nbsp;引用的对象库Microsoft Access 9.0 Object Library 创建应用程序对象的方法CreateObject("Access.Application.9") </p><p>2 &nbsp;创建ADO连接</p><p>cn.Provider = "Microsoft Jet OLEDB 4.0"</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在VB+ACCESS+SQL条件,引用MicroSoft Jet OleDb 4.0数据库环境下, SQL语法格式应为<br/>JET SQL语法格式。</p><p>SQL 与 JET SQL 有什么区别《查询》 <br/>SQL 是结构化查询语言的缩写,是一种标准。<br/>现在一般将标准的 SQL 语言规范称为 ANSI SQL XX,后面的 XX 表示版本,比如 ANSI SQL 92 规范。</p><p>很多公司的数据库软件都使用 SQL 语句来进行数据库操作,但是各大公司都对标准的 SQL 语言规范进行了扩展,因此 SQL 很多分支,各种分支都有其特殊且与其他分支不兼容的地方。 JET SQL 与 T-SQL 都是微软所特有的 SQL 分支,JET SQL 用于 ACCESS 数据库软件,T-SQL 用于 SQL SERVER 数据库软件。</p><p>本文为什么要对SQL作细化总结?理由有2点</p><p>1 在编程中,在编程实现中,使用SQL语言多层套嵌时,出现了括号问题,找了很多资料原因才找到。如:</p><p>&nbsp;&nbsp; 多层套嵌时 JET SQL 必须将 SELECT 子句用括号 ( ) 一层一层包含起来,而 T-SQL 没有此规定<br/>Jet SQL 示例:<br/>select .,.,.,. <br/>from ((( left join on .=.) <br/>&nbsp;&nbsp;&nbsp; left join on .=.) <br/>&nbsp;&nbsp;&nbsp; left join on .=.)<br/>T-SQL 示例:<br/>select .,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . <br/>from left join on .=. <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; left join on .=.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; left join on .=.<br/>2 SQL语法如果用好了,要比其它方法效率高。如</p><p>在一个access数据库中,有三个Table表。每个表都有一个实体句柄Handle或Object(建立线、圆等实体属性不同,不须建多个库),须要采用SQL技术将三个表中的ENT字段合到一个表中。这种工作方法的效率要比采用循环打开三个表赋值高,而且简单,实用.<br/>select (a.ent &amp; b.ent &amp; c.ent) as Ent from ((a _<br/>&nbsp; inner b&nbsp; on a.ID = b.ID) _<br/>&nbsp; inner c&nbsp; on a.ID = c.ID)</p><p>&nbsp;要是采用rst1,rst2,rst3<br/>do until rest1.eof()</p><p>loop<br/>do until rest2.eof()</p><p>loop<br/>do until rest2.eof()</p><p>loop<br/>光写程序就要几十条</p><p>因此,本文总结JET SQL知识,目的是在数据记录和实体对应的惟一性的编程时,提高工作效率。</p>

兰州人 发表于 2007-2-2 16:21:00

<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;">调用Access 2000的mdb文件,所具备的基本知识</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;">在<font face="Times New Roman">Access&nbsp;2000</font>中,为了支持<font face="Times New Roman">Access</font>的新特性,为了和<font face="Times New Roman">ANSI-92</font>的标准更加一致,并且允许在<font face="Times New Roman">Access&nbsp;</font>和<font face="Times New Roman">&nbsp;Microsoft&reg;&nbsp;SQL&nbsp;Server</font>™间的更好的兼容性,包含在<font face="Times New Roman">Microsoft&nbsp;Jet&nbsp;4.0</font>数据引擎中的<font face="Times New Roman">SQL</font>作了许多增强。<font face="Times New Roman">Jet</font>数据引擎现在有两种格式的<font face="Times New Roman">SQL</font>语法:一种是支持以前使用的<font face="Times New Roman">SQL</font>语法,另一种是支持新的<font face="Times New Roman">SQL</font>语法规范。需要格外注意的是,只有在用户使用<font face="Times New Roman">ActiveX&reg;&nbsp;Data&nbsp;Objects&nbsp;(ADO)</font>和<font face="Times New Roman">Jet&nbsp;OLE&nbsp;DB&nbsp;provider</font>时新的语法才是可用的,而当前通过<font face="Times New Roman">Access&nbsp;SQL&nbsp;View</font>接口或者<font face="Times New Roman">DAO</font>是无法使用新的语法的。本文指出只有通过<font face="Times New Roman">Jet&nbsp;OLE&nbsp;DB&nbsp;provider&nbsp;</font>和<font face="Times New Roman">&nbsp;ADO</font>才能够使用某个特定的<font face="Times New Roman">SQL</font>命令。<font face="Times New Roman">&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;">在<font face="Times New Roman">Access</font>的上一版本中,数据访问对象<font face="Times New Roman">(DAO)</font>是主要的数据访问方法。而现在发生了改变,尽管<font face="Times New Roman">DAO&nbsp;</font>仍旧被支持,但新的数据访问方法是使用<font face="Times New Roman">ADO</font>。<font face="Times New Roman">ADO</font>是微软的通用数据访问战略(<font face="Times New Roman">Microsoft's&nbsp;Universal&nbsp;Data&nbsp;Access&nbsp;strategy</font>)的一部分,其最基本的假设是无论数据存在那里都是可以访问的,不管是数据库、目录结构还是某重用户自定义的数据库。<font face="Times New Roman">&nbsp;<p></p></font></p>

兰州人 发表于 2007-2-2 16:24:00

<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman"></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">SQL</font>代码规范<font face="Times New Roman">&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;">使用一致性的<font face="Times New Roman">SQL</font>代码规范。与所有的代码规范相同,目的是使用易读和易于理解的方式来显示代码。这就要通过空格、换行和大写关键字的结合使用来实现。通常来说,要使用大写字母来打印<font face="Times New Roman">SQL</font>的关键字,如果<font face="Times New Roman">SQL</font>语句必须换行,尽量使<font face="Times New Roman">SQL</font>语句的主要部分一起换行。看过一些例子之后,相信读者会对此有较好的感觉。<font face="Times New Roman">&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;">不合格式的<font face="Times New Roman">SQL</font>代码<font face="Times New Roman">&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">CREATE&nbsp;TABLE&nbsp;tblCustomers&nbsp;(CustomerID&nbsp;INTEGER&nbsp;NOT&nbsp;NULL,&nbsp;&nbsp;TEXT(50)&nbsp;NOT&nbsp;NULL,&nbsp;&nbsp;TEXT(50)&nbsp;NOT&nbsp;NULL,&nbsp;Phone&nbsp;TEXT(10),&nbsp;Email&nbsp;TEXT(50))&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;">良好格式的<font face="Times New Roman">SQL</font>代码<font face="Times New Roman">&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">CREATE&nbsp;TABLE&nbsp;tblCustomers&nbsp;(&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">...CustomerID&nbsp;INTEGER&nbsp;NOT&nbsp;NULL,&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">...&nbsp;TEXT(5)&nbsp;NOT&nbsp;NULL,&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">...&nbsp;TEXT(50)&nbsp;NOT&nbsp;NULL,&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">...Phone&nbsp;TEXT(10),&nbsp;<p></p></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><font face="Times New Roman">...Email&nbsp;TEXT(50))&nbsp;<p></p></font></p>
页: [1]
查看完整版本: 数据记录和实体对应的惟一性,所具备的SQL知识!