|
在Access中使用中级SQL
现在我们已经讨论了中级SQL的语法,那么让我们看看在一个Access应用程序中我们可以使用它的一些途径。
数据库范例
作为这篇文章的附带,这里有一个叫acIntSQL.mdb的数据库范例。
在acIntSQL中的任一处都是基于本文所提到的所有主题,并且它通过查询和范例的代码演示了我们所讨论的不同SQL语句。
在acIntSQL中所使用到的许多部分查询都是基于特定工作表中存在和包含的数据,或者是基于其它已经存在的数据库对象。如果你由于丢失数据而在运行一个查询产生故障,打开工作表重置窗体并单击工作表重置按键。这将会重新生产工作表和其中原始缺省数据。如果要手动通过工作表重置过程,你需要按照下面的顺序执行这些查询过程:
Drop Table Shipping
Drop Table Invoices
Drop Table Customers
Drop Table CreditLimit
Create Table Customers
Create Table Invoices
Create Table Shipping
Create Table CreditLimit
Populate Customers
Populate Invoices
Populate Shipping
Populate CreditLimit
查询
查询就是指存储在Access数据库中并可以随时调用的SQL 语句,也可以直接被Access 用户界面或Visual Basic® for Applications (VBA)编程语言调用。查询可以使用Access Query Designer来建立,Access Query Designer时一个可以很容易建立SQL语句的强大的可视化工具。或者你也可以通过直接在SQL视图窗口输入SQL语句来建立查询。
如同在"Microsoft Jet SQL for Access 2000基础篇"一文中所述, Access把数据库中所有面向数据的任务转化为SQL 语句。要演示这一点,让我们使用Access Query Designer来建立一个查询。
打开acIntSQL数据库。
(单击此处拷贝acIntSQL.mdb 数据库例子。)
确保tblCustomers 和 tblInvoices这两个表单已经创建并且其中包含有数据。
在数据库窗口中从Objects条中选择Queries选项。
在数据库窗口工具条里单击按键 New。
在New Query对话框中选择Design View并单击OK。
在Show Table对话框中选择tblCustomers并单击Add;接着选择tblInvoices 并单击Add;接着单击Close按键。
在tblCustomers 域名列表中选择Last Name 域并把它拖到设计表格中的第一个域中。
在tblInvoices 域名列表中选择InvoiceDate 和 Amount域并把它们拖到设计表格中。
在设计表格中InvoicwDate域的Sort属性里选择Ascending。
从Access菜单条中选择View并单击SQL View。这样就打开了SQL View 窗口和显示了在查询中Access正在使用的SQL语法。
注意 这个查询类似于存储在acIntSQL 数据库中的"Join - Inner"查询。
嵌入语句
嵌入SQL 语句就是指你在Visual Basic for Applications (VBA) 编程语言中使用SQL 语句。虽然深入讨论如何使用VBA超出了本文的范围,但如何使用程序来运行SQL 语句却是一件简单的工作。
在acIntSQL数据库中,有两个使用内部SQL语句的窗体需要通过Jet OLE DB provider 和 ADO来运行:就是演示数据定义语句的 Intermediate DDL 窗体,以及演示数据处理语句的Intermediate DML窗体。
中级DDL 语句
这个acIntSQL数据库有许多关于你可以用来管理你的数据库结构的SQL 语句的范例。有一部分数据定义语言 (DDL) 语句被以数据定义查询的方式存储。而其它的则在程序设计代码的内部作为内联SQL使用。如果你要使用这些DDL例子,你需要在运行它之前删除一些数据库对象。例如,如果你想运行创建当前数据类型的查询,你就先要确定当前数据表单不存在。如果不是,那么,这个查询就会返回一个信息告诉你这个表单已经存在。在运行任何DDL 例子之前,检查它所要创建或改变的数据库对象确定其已经被设定好,这样程序才能完全的运行。
在内联DDL 语句范例中,同样的建议仍然是适用的:检查并设定它们会影响的数据库对象以确保DDL 语句的顺利运行。
一般来说,内联DDL 语句只是通过简单设定一个ADO Connection对象来运行,并将SQL 语句传送给 Connection对象的运行程序。下面是来源于在中级DDL语句窗体的二进制数据类型的输入输出。
Private Sub cmdBinary_Click() Dim conDatabase As ADODB.Connection
Dim SQL As String
On Error GoTo Error_Handler
Set conDatabase = Application.CurrentProject.Connection
'注意: Fields 1 through 4 can be created through both
'SQL View and the Jet OLEDB Provider.
'Fields 5 and 6 can only be created through the
'Jet OLE DB provider.
SQL = "CREATE TABLE tblCodeBinaryDataTypes (" & _
"Field1_BINARY BINARY, " & _
"Field2_BINARY250 BINARY(250), " & _
"Field3_VARBINARY VARB |
|