首先我們來介紹下ADO物件:
1、Access內嵌的VBA是用ADO技術開發資料庫應用的主要工具,ADO是目前Microsoft通用的資料存取技術;
2、 ADO物件模型包括:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error九個物件;
相關建議: access資料庫教學
3、主要的ADO對象介紹:
1)Connection對象:ADO對像模型中的最進階對象,用來實現應用程式與資料來源的連接;
2)Command物件:主要在VBA中使用SQL語句存取、查詢和修改資料庫中的數據,實作Recordset物件無法實現的操作(資料表層級的操作),可以使用DoCmd代替;
3)Recordset對象:ADO最常用的、重要的對象,可以存取表和查詢對象,傳回的記錄儲存在Recorderset對像中,主要執行的操作:
①查詢資料表中的資料;
②在資料表中新增資料;
③更新資料表中的資料;
④刪除資料表中的特定資料;
④刪除資料表中的特定資料;
# ④刪除資料表中的特定資料;
在Access中引用ADO物件
1、Access引用ADO的步驟:
①宣告、初始化Connection物件;
②建立Recordset物件,程式完成各各各種操作;
③關閉ADO物件;
#2、宣告、初始化Connection物件
'宣告Connection物件:一般使用cn做變數的命名前綴;
Dim coName As ADODB.Connection
'初始化Connection對象,連接目前資料庫;
Set cnName = CurrentProject.Connection
3、宣告和開啟Recordset物件
1)宣告、初始化Recordset物件
Dim rsName As ADODB.Recoreset set rsName = new ADODB.Recordset
2)開啟一個Recordset物件
使用Recordset的Open方法可以開啟資料表、查詢物件、或直接引用SQL查詢語句rsName.Open source, ActiveConnection, CursorType,LockType,Option
4、關閉Recordset和Connection物件
rsName.Close cnName.Close Set rsName = Nothing Set cnName = Nothing
透過Recordset物件引用記錄欄位
1、引用欄位的方法有2種:直接在記錄集物件中引用欄位名稱;使用記錄集物件的Fields(n)屬性引用;
Code = rsName!字段名
'引用該欄位的第一筆記錄
Code = rsName .Field(n)
'引用該欄位的第n筆記錄,n從0開始,可以用迴圈輸出需要量的記錄
2、如果記錄集欄位包含空格、或是保留字,則引用時必須將該欄位用 [ ] 括起來;
透過Recordset物件瀏覽記錄
# 1.Recordset記錄集物件提供了4種方法瀏覽記錄#2、 BOF、EOF屬性分別記錄指標是否在檔案開始、檔案結尾;
如果記錄集指標指向某記錄時,BOF和EOF都為false;'新增一個窗體元件的按鈕事件:瀏覽下一筆記錄Priavte Sub ComomndNext_Click() rsDemo.MoveNext If rsDemo。EOF Then rsDemo.MoveFirst End If End Sub3、Recordset物件的LockType屬性預設為adLockReadOnly(唯讀)
透過Recordset物件編輯資料
1、用AddNew方法新增記錄
#1)調用記錄集AddNew方法,產生一個空記錄
2)為空記錄的各個字段賦值;
3)用記錄集Update方法更新保持新記錄;
##'新增記錄按鈕事件,假設rsDemo記錄集有欄位Id(int),Name(String),Age(int)Private Sub CommandAdd_Click() rsDemo.MoveLast '记录集指针移动到记录集最后 rsDemo.AddNew '添加一条新纪录 rsDemo ! Id = "123" rsDemo ! Name = "assad" rsDemo ! Age = "18" rsDemo.Update End Sub2、用Update方法修改記錄1)尋找並將記錄集指標移動到需要修改的記錄上;2)對記錄中的各個欄位的值進行修改;3)以記錄集Update方法更新保持新記錄;## ####'修改記錄集中Age欄位所有值1;###
Private Sub UpdateAge() rsDemo.MoveFirst Do Dim Code as Integer Code = rsDemo ! Age rsDemo ! Age = Code +1 Loop Until rsDemo.EOF rsDemo.Update End Sub###3、用Delete方法刪除記錄######1)將記錄集指標移到需要刪除的記錄上;## ####2)使用Delete方法刪除目前記錄;######3)將某筆記錄指定為目前記錄###
'删除rsDemo数据集中Age = "18" 的记录 Private Sub DeleteAge(Dim deleteAge as Integer) rsDemo.MoveFirst Do IF rsDemo ! Age == deleteAge Then rsDemo。Delete rsDemo。MoveNext End IF Loop Until rsDemo.EOF End Sub###註: 一筆記錄被刪除後,Access不會自動是下一筆記錄成為目前記錄,這時要用MoveNext方法將記錄集指針定位到最後一筆記錄中;######透過Command/DoCmd對象使用SQL指令######Access提供了DoCmd對象,其RunSOL方法可以在VBA中使用SQL指令;###
DoCmd.RunSQL "SQL命令"###or:###
Dim s AS String s = "SQL命令" DoCmd.RunSQL s###1、定義資料######1)來建立資料表##### 格式: Create Table 表名(字段名資料類型.....)###### 如:DoCmd.RunSQL "Create Table 研究生(姓名text(6),年齡byte,入學日期date)"####### 2)增加欄位###### 格式: Alter Table 表名Add 欄位名稱資料類型###
如:DoCmd.RunSQL "Alter Table student Add 学费 currency"
3)改变字段类型
格式: Alter Table 表名 Alter 字段名 新数据类型
如:DoCmd.RunSQL "Alter Table student Alter 年龄 integer"
4)改变字段宽度
格式: Alter Table 表名 Alter 字段名 新宽度
如:DoCmd.RunSQL "Alter Table studnt Alter 姓名 text(6)"
5)删除一个字段
格式: Alter 表名 Drop 字段名
如: DoCmd.RunSQL "Alter student Drop 年龄"
6)删除一个数据表
格式: Drop Table 表名
如:DoCmd.RunSQL "Drop Table student"
7)修改数据表名字
格式: DoCmd.rename "新表名", acTable, "旧表名"
如:DoCmd.rename "学生", acTable, "student"
2、编辑数据
1)向表中追加数据
格式: Insert into 表名 Values(记录.....)
注: 字符串型数据用 ‘ ’, 日期型型数据可以 ‘ ’,或 # #;
如:DoCmd.RunSQL "Insert into student Values('李达',35,'2003-1-15') "
或:
Dim name As String Dim age As Byte, dates As Date name = InputBox("输入学生姓名") dates = InputBox("输入入学日期") ages = 17 DoCmd.RunSQL "Insert into student Values ('" & name & "'," & age & ",'" & dates & "')"
2)修改表中记录
格式: Update 表名 set 字段=数值 Where 限定条件
如:DoCmd.RunSQL "Update student set 年龄=20 Where 姓名='李达'"
3)删除待定记录
格式: Delete from 表名 where 限定条件
如: DoCmd.RunSQL "Delete from student where 姓名='李达'"
3、实现数据完整性约束
1)设置主键
格式: Alter Table 表名 Add Primary Key (字段名)
如:DoCmd.RunSQL "Alter Table 导师 Add Primary Key (导师编号)"
2)设置外键
格式: Alter Table 主表名 Add Foreign Key (字段名) References 从表名
如:DoCmd.RunSQL "Alter Table 研究生 Add Foreign Key (导师编号) References 导师"
4、执行查询操作
VBA程序中可以用SQL命令完成数据查询操作,但是无法直接将查询结果所返回的记录集按数据表的形式显示,解决方法有:
1)将查询结果的返回记录集生成一个新表保存在数据库中,然后用ADO记录集对象对这个表进行各种操作,完成后再删除这个表;
Docmd.runSQL "Select 姓名,职称,年龄 Into temp From 导师 Where 职称 in('教授','副教授')"
操作.....
rsTeacher.Close Docmd.runSQL "Drop Table temp"
2)将返回的记录集看成保存在内存中的一个临时表,用ADO记录集对象直接打开该查询指令;
访问当前数据库以外的数据库
1、Access提供了Connection.Open方法以连接另一个数据库
2、格式: Connection对象.Open "Provider=提供者;Date Source=数据库名;User ID=用户;PassWord=密码"
3、其中提供者为 Microsoft.Jet.OLEDDB.4.0;数据库名包括 数据库所在的路径(包括.mdb文件名)。
以上是利用ADO技術操作access資料庫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!