3.2 ADO使用的步骤及方法 (1). 引用ADO类型库 从VBE的”工具/引用”菜单中选择可引用“Microsoft ActiveX Data Object 2.5 Library”项. (2). 定义和生成ADO对象 1) Dim Cnn As New ADODB.Connection ‘数据库连接Connection对象变量 2) Dim Rst As New ADODB.Recordset ‘数据库记录集对象变量 3) Dim Fld As ADODB.Field ‘记录字段对象变量 (3). 打开数据库 Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\CONTACT1.MDB;" 用定义生成的数据库连接对象的open方法,打开一个数据库。 (4).打开表或建立表的子表 Rst.Open "SELECT 字段名[,字段名] FROM 表名",Cnn, adOpenKeyset, adLockOptimistic 用记录集对象的open方法,打开或生成一个数据库的表或子表记录。 如:Rs1.Open "Person", Cnn, adOpenKeyset, adLockOptimistic '取得联系人表所有记录集内容 (5). 操作数据库记录 对记录的操作就是使用记录集的对象方法和属性来实现,属性和方法其实与DAO的相似,这里就不多说。看下面示例,尽快学会使用ADO. 示例: 打开一个数据库,建立浏览, 修改, 删除, 添加和筛选等功能。 (使用ADO修改和删除记录时,最关键一条就是主关键字段要不能重复,所以我们需要建立主关键字段为自动编号类型格式,Access自动编号,这样就不会重复,否则出错!) Option Explicit Public totalRecs As Long, curRecNo As Long '用于记住 总记录数 和 当前记录号 Public Cnn As ADODB.Connection '定义全局数据库对象变量 Public Rs1 As ADODB.Recordset '窗体启动程序 Private Sub UserForm_Initialize() Set Cnn = New ADODB.Connection '创建一个连接和打开 Cnn 连接 Set Rs1 = New ADODB.Recordset '创建一个记录集 Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\CONTACT1.MDB;" Rs1.Open "Person", Cnn, adOpenKeyset, adLockOptimistic '取得联系人表所有记录集内容 Rs1.MoveLast totalRecs = Rs1.RecordCount curRecNo = 1 Rs1.MoveFirst Call dis_form '显示数据记录到窗体 End Sub '****[第一条]按钮程序 **** Private Sub CommandButton1_Click() Rs1.MoveFirst curRecNo = 1 Call dis_form End Sub '****[上一条]按钮程序 **** Private Sub CommandButton2_Click() Rs1.MovePrevious curRecNo = curRecNo - 1 Call dis_form End Sub '****[下一条]按钮程序 **** Private Sub CommandButton3_Click() Rs1.MoveNext curRecNo = curRecNo + 1 Call dis_form End Sub '****[最后一条]按钮程序 **** Private Sub CommandButton4_Click() Rs1.MoveLast curRecNo = totalRecs Call dis_form End Sub '****[删除]按钮程序 **** Private Sub CommandButton5_Click() Rs1.Delete totalRecs = totalRecs - 1 Rs1.MoveNext If Rs1.EOF = True Then Rs1.MovePrevious curRecNo = curRecNo - 1 End If Rs1.Update '更新数据记录集,这点与DAO方法不同,DAO删除后不需更新 Call dis_form End Sub '**** [关闭]按钮 **** Private Sub CommandButton6_Click() Rs1.Close Cnn.Close Set Rs1 = Nothing: Set Cnn = Nothing '删除对象 Unload Me '关闭窗体 End Sub '****[更新]按钮程序 **** Private Sub CommandButton8_Click() On Error Resume Next Rs1.Fields(1) = TextBox1.Text Rs1.Fields(2) = TextBox2.Text Rs1.Fields(3) = TextBox3.Text Rs1.Fields(4) = TextBox4.Text Rs1.Fields(5) = TextBox5.Text Rs1.Fields(6) = TextBox6.Text Rs1.Fields(7) = TextBox7.Text Rs1.Fields(8) = TextBox8.Text Rs1.Update End Sub '****[查找]按钮程序 **** Private Sub CommandButton10_Click() Dim Rs2 As New ADODB.Recordset Dim i As Integer Rs2.Open "select * from person where 联系人编号 like " _ & TextBox1.Text, Cnn, adOpenKeyset, adLockOptimistic ‘SQL语言使用,查询生成新的记录集 If Rs2.EOF And Rs2.BOF Then MsgBox "Not find!" Else Sheets(1).Cells.ClearContents For i = 0 To Rs2.Fields.Count - 1 Sheets(1).Cells(1, i + 1) = Rs2.Fields(i).Name Next Sheets(1).Cells(2, 1).CopyFromRecordset Rs2 MsgBox "The find result is displayed in Excel." End If Rs2.Close Set Rs2 = Nothing End Sub '****[添加]按钮程序 **** Private Sub CommandButton9_Click() Rs1.AddNew '添加一条记录,注意Fields(0)字段为主键且Access自动编号,这可以保证添加内容可以重复,否则出错 totalRecs = totalRecs + 1 Rs1.Fields(1) = TextBox1.Text Rs1.Fields(2) = TextBox2.Text Rs1.Fields(3) = TextBox3.Text Rs1.Fields(4) = TextBox4.Text Rs1.Fields(5) = TextBox5.Text Rs1.Fields(6) = TextBox6.Text Rs1.Fields(7) = TextBox7.Text Rs1.Fields(8) = TextBox8.Text Rs1.Update curRecNo = totalRecs Call dis_form End Sub '****在窗体上显示当前记录***** Private Sub dis_form() TextBox1.Text = Rs1.Fields(1) TextBox2.Text = Rs1.Fields(2) TextBox3.Text = Rs1.Fields(3) TextBox4.Text = Rs1.Fields(4) TextBox5.Text = Rs1.Fields(5) TextBox6.Text = Rs1.Fields(6) TextBox7.Text = Rs1.Fields(7) TextBox8.Text = Rs1.Fields(8) CommandButton1.Enabled = curRecNo > 1 CommandButton2.Enabled = curRecNo > 1 CommandButton3.Enabled = curRecNo < totalRecs CommandButton4.Enabled = curRecNo < totalRecs TextBox9 = curRecNo End Sub (6).数据库使用SQL查询语言 数据库一般都提供了关连式数据库的查询语言SQL (Structured Query Language), 它是一种非常口语化、既易学又易懂的语法。此语言几乎是每个数据库系统都必须提供的,用以表示关连式的操作,包含了资料的定义(DDL)以及资料的处理(DML)。 对于SQL语言的使用,请参考别的专业教程,本文就简约介绍一下,示例中也仅用到一点SQL语言。 (6.1)资料定义DDL(Data Definition Language) 资料定义语言是指对资料的格式和形态下定义的语言,他是每个数据库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什么字段元主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。 如建表格:Create Table table_name (column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY], column2 DATATYPE [NOT NULL],...) (6.2)资料操作DML(Data Manipulation Language) 资料定义好之后接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、 查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分别介绍他们的语法: 增加资料:INSERT INTO table_name (column1,column2,...) VALUES ( value1,value2, ...) 查询资料:SELECT * FROM table_name WHERE conditions 更改资料:UPDATE table_name SET column1=''xxx'' WHERE conditoins 删除资料:DELETE FROM table_name WHERE conditions
[此贴子已经被作者于2006-7-22 12:42:40编辑过] |