分享
 
 
 

MSJetSQLforAccess2000中级篇(IV)

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

现在我们已经讨论了中级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 VARBINARY, " & _

"Field4_VARBINARY250 VARBINARY(250), " & _

"Field5_BVARYING BINARY VARYING, " & _

"Field6_BVARYING250 BINARY VARYING(250))"

conDatabase.Execute SQL

MsgBox "The BINARY datatypes table has been created!"

conDatabase.Close

Set conDatabase = Nothing

Exit Sub

Error_Handler:

MsgBox Err.Description, vbInformation

End Sub

运行过其中一个DDL 语句后,在设计视图中打开被影响的数据库查看产生了什么变动。如果DDL 语句影响了表单之间的关联,打开编辑关联窗口查看其变动。例如让我们检查一下在中级DDL语句窗体中的Alter Table w/ Fast Foreign Key输出指令和按键。

打开acIntSQL 数据库。

确定tblCustomers 和 tblInvoices 表单已经被创建。

在数据库窗口从Objects条中选择Forms。

在数据库窗口工具条中着重显示Intermediate DDL 语句的窗体并单击Design按键。

在Intermediate DDL 语句窗体中,鼠标右键点击Alter Table w/ Fast Foreign Key按键并从弹出菜单中选择 Build Event…。这操作将打开VBA开发环境以及包含着cmdFastKey_Click子过程的代码窗口。

检查被分配给 SQL变量的SQL 语句。

SQL = "ALTER TABLE tblInvoices " & _

"ADD CONSTRAINT FK_tblInvoices " & _

"FOREIGN KEY NO INDEX (CustomerID) REFERENCES " & _

"tblCustomers (CustomerID) " & _

"ON UPDATE CASCADE " & _

"ON DELETE CASCADE"

注意 DDL 语句改变了tblInvoices 表单并添加了牢固的外关键字限制。同时它也通过使用级联子句在tblInvoices 和 tblCustomers 之间建立了一个数据关联。

关闭VBA 开发环境。

关闭Intermediate DDL 语句窗体。

从Tools菜单中,选择Relationships…菜单项以打开关联窗口。

双击tblCustomers 和 tblInvoices 之间的关联链接以打开Edit Relationships对话框。

注意级联性更新和删除选项没有被设置。

关闭对话框。

当关联链接仍然显示时,按Delete键删除联接。

关闭关联窗口。

如果Intermediate DDL 语句在数据库窗口仍然显示,点击数据库窗口工具条中的Open按键。

点击Alter Table w/ Fast Foreign Key按键产生一个外关键字联系。

关闭Intermediate DDL 语句窗体。

当新的关系链接被创建后,使用前面提到的步骤打开Edit Relationships对话框。

注意级联性更新和删除选项已经被设置。

中级 DML 语句

这个acIntSQL数据库有许多关于数据处理语言 (DML) 语句的例子,在这些范例里你可以用它们来找到数据,并且它们中的大多数是以查询的形式实现的。仅有的以在线SQL形式实现的DML 语句则是基于中级DML 语句窗体的。窗体中的三个例子在LIKE子句中使用"_" 和 "%" 通配符,并使用SELECT INTO 语句在一个外部数据库中创建一个表单。

在acIntSQL 数据库中保存的两个查询是属于DML 语句内容却执行类似DDL的操作。其中的SELECT INTO 语句从已有的数据库中找到数据并用这些数据创建新的工作表。通过这些范例的学习,你将学会如何删除目标工作表,前提是这些工作表已经存在。

在中级DML语句的窗体中的Create Customers Database输出指令和按键展示了一个对SELECT INTO 语句的有趣应用。这是一个告诉你使用中级SQL 语句所能完成的各种事情的一个好的例子。下面就是关于输出命令和按键的子过程的代码:

Private Sub cmdCreateDB_Click()

Dim conCatalog As ADOX.Catalog

Dim conDatabase As ADODB.Connection

Dim SQL As String

Dim sDBName As String

On Error GoTo Error_Handler

'Initialize objects & variables.

Set conDatabase = Application.CurrentProject.Connection

Set conCatalog = New ADOX.Catalog

sDBName = "C:Customers.mdb"

'Create the Customers database.

conCatalog.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=" & sDBName

'Run the DML statement to build the Customers table.

SQL = "SELECT * INTO tblCustomers IN '" & sDBName & _

"'" & "FROM tblCust

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有