小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用ADO操作Access數(shù)據(jù)庫(kù)

 昵稱2548375 2018-09-18

 ADO對(duì)象

1、Access內(nèi)嵌的VBA是用ADO技術(shù)開發(fā)數(shù)據(jù)庫(kù)應(yīng)用的主要工具,ADO是目前Microsoft通用的數(shù)據(jù)訪問技術(shù);
2、ADO對(duì)象模型包括:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error九個(gè)對(duì)象;
3、主要的ADO對(duì)象介紹
1)Connection對(duì)象:ADO對(duì)象模型中的最高級(jí)對(duì)象,用來(lái)實(shí)現(xiàn)應(yīng)用程序與數(shù)據(jù)源的連接;
2)Command對(duì)象:主要在VBA中使用SQL語(yǔ)句訪問、查詢和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),實(shí)現(xiàn)Recordset對(duì)象無(wú)法實(shí)現(xiàn)的操作(數(shù)據(jù)表級(jí)別的操作),可以使用DoCmd代替;
3)Recordset對(duì)象:ADO最為常用的、重要的對(duì)象,可以訪問表和查詢對(duì)象,返回的記錄儲(chǔ)存在Recorderset對(duì)象中,主要執(zhí)行的操作:
     ①查詢數(shù)據(jù)表中的數(shù)據(jù);
     ②在數(shù)據(jù)表中添加數(shù)據(jù);
     ③更新數(shù)據(jù)表中的數(shù)據(jù);
     ④刪除數(shù)據(jù)表中的特定數(shù)據(jù);


 在Access中引用ADO對(duì)象


1、Access引用ADO的步驟:
     ①聲明、初始化Connection對(duì)象;
     ②創(chuàng)建Recordset對(duì)象,編程完成各種操作;
     ③關(guān)閉ADO對(duì)象;

2、聲明、初始化Connection對(duì)象
'聲明Connection對(duì)象:一般使用cn做為變量的命名前綴;
Dim coName As ADODB.Connection
'初始化Connection對(duì)象,連接當(dāng)前數(shù)據(jù)庫(kù);
Set cnName = CurrentProject.Connection  

3、聲明和打開Recordset對(duì)象
1)聲明、初始化Recordset對(duì)象
Dim rsName As ADODB.Recoreset
set rsName = new ADODB.Recordset
2)打開一個(gè)Recordset對(duì)象
使用Recordset的Open方法可以打開數(shù)據(jù)表、查詢對(duì)象、或直接引用SQL查詢語(yǔ)句
rsName.Open source, ActiveConnection, CursorType,LockType,Option
常用Option類型  
adCmdTable 表類型
adCmdText 命令文本
adCmdStoredProc 過程
adCmdUnKnowm 不指定內(nèi)容

4、關(guān)閉Recordset和Connection對(duì)象
rsName.Close
cnName.Close
Set rsName = Nothing
Set cnName = Nothing


  通過Recordset對(duì)象引用記錄字段


1、引用字段的方法有2種:直接在記錄集對(duì)象中引用字段名稱;使用記錄集對(duì)象的Fields(n)屬性引用;
Code = rsName!字段名
'引用該字段的第一條記錄
Code = rsName.Field(n)
'引用該字段的第n條記錄,n從0開始,可以用循環(huán)輸出需要量的記錄

2、如果記錄集字段包含空格、或者是一個(gè)保留字,則引用時(shí)必須將該字段用 [  ] 括起來(lái);


  通過Recordset對(duì)象瀏覽記錄


1.Recordset記錄集對(duì)象提供了4種方法瀏覽記錄
MoveFirst 記錄指針移動(dòng)到記錄集的第一條記錄
MoveNext 移動(dòng)到當(dāng)前記錄的下一條記錄
MovePrevious 移動(dòng)到當(dāng)前記錄的上一條記錄
MoveLast 移動(dòng)到記錄集的最后一條記錄

2、BOF、EOF屬性分別記錄指針是否在文件開始、文件末尾;
    如果記錄集指針指向某記錄時(shí),BOF和EOF都為false;

'添加一個(gè)窗體部件的按鈕事件:瀏覽下一條記錄
Priavte Sub ComomndNext_Click()
     rsDemo.MoveNext
     If rsDemo。EOF Then
          rsDemo.MoveFirst
     End If
End Sub 

3、Recordset對(duì)象的LockType屬性默認(rèn)為adLockReadOnly(只讀)
adLockReadOnly 數(shù)據(jù)處于只讀狀態(tài),數(shù)據(jù)不能改變
adLockPressimistic 保守式鎖定,在編輯數(shù)據(jù)是時(shí)鎖定數(shù)據(jù)源記錄,直到數(shù)據(jù) 編輯完成時(shí)才釋放
adLockOptimistic 開放式鎖定,編輯數(shù)據(jù)時(shí)不鎖定數(shù)據(jù),只在調(diào)用Update方法提交數(shù)據(jù)時(shí)才鎖定數(shù)據(jù)源記錄
adLockBathOptimistic 開方式更新,應(yīng)用于批更新模式



 通過Recordset對(duì)象編輯數(shù)據(jù)


1、用AddNew方法添加記錄
1)調(diào)用記錄集AddNew方法,產(chǎn)生一個(gè)空記錄
2)為空記錄的各個(gè)字段賦值;
3)用記錄集Update方法更新保持新記錄;
'添加記錄按鈕事件,假設(shè)rsDemo記錄集有字段Id(int),Name(String),Age(int)
Private Sub CommandAdd_Click()
     rsDemo.MoveLast  '記錄集指針移動(dòng)到記錄集最后
     rsDemo.AddNew  '添加一條新紀(jì)錄   
     rsDemo ! Id = "123"
     rsDemo ! Name = "assad"
     rsDemo ! Age = "18" 
     rsDemo.Update
End Sub

2、用Update方法修改記錄
1)尋找并將記錄集指針移動(dòng)到需要修改的記錄上;
2)對(duì)記錄中的各個(gè)字段的值進(jìn)行修改;
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)將記錄集指針移動(dòng)到需要?jiǎng)h除的記錄上;
2)使用Delete方法刪除當(dāng)前記錄;
3)將某條記錄指定為當(dāng)前記錄
'刪除rsDemo數(shù)據(jù)集中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不會(huì)自動(dòng)是下一條記錄成為當(dāng)前記錄,這時(shí)要用MoveNext方法將記錄集指針定位到最后一條記錄中;





  通過Command/DoCmd對(duì)象使用SQL命令

Access提供了DoCmd對(duì)象,其RunSOL方法可以在VBA中使用SQL命令;
     DoCmd.RunSQL "SQL命令"
or:
     Dim s AS String
     s = "SQL命令"
     DoCmd.RunSQL s

1、定義數(shù)據(jù)
1)創(chuàng)建數(shù)據(jù)表
 格式:Create Table 表名 (字段名 數(shù)據(jù)類型.....)
 如:DoCmd.RunSQL "Create Table 研究生(姓名 text(6),年齡 byte,入學(xué)日期 date)"
2)增加字段
 格式:Alter Table 表名 Add 字段名 數(shù)據(jù)類型
 如:DoCmd.RunSQL "Alter Table student Add 學(xué)費(fèi) currency"
3)改變字段類型
 格式:Alter Table 表名 Alter 字段名 新數(shù)據(jù)類型
 如:DoCmd.RunSQL "Alter Table student Alter 年齡  integer"
4)改變字段寬度
 格式:Alter Table 表名 Alter 字段名 新寬度
 如:DoCmd.RunSQL "Alter Table studnt Alter 姓名 text(6)" 
5)刪除一個(gè)字段
 格式:Alter 表名 Drop 字段名
 如: DoCmd.RunSQL "Alter student Drop 年齡"
6)刪除一個(gè)數(shù)據(jù)表
 格式:Drop Table 表名
 如:DoCmd.RunSQL "Drop Table student"
7)修改數(shù)據(jù)表名字
 格式:DoCmd.rename "新表名", acTable, "舊表名"
 如:DoCmd.rename "學(xué)生", acTable, "student"

2、編輯數(shù)據(jù)
1)向表中追加數(shù)據(jù)
 格式:Insert into 表名 Values(記錄.....)
注:字符串型數(shù)據(jù)用 ‘   ’, 日期型型數(shù)據(jù)可以 ‘    ’,或 #  #;
 如:DoCmd.RunSQL "Insert into student Values('李達(dá)',35,'2003-1-15') "
  或:Dim name As String
         Dim age As Byte, dates As Date
         name = InputBox("輸入學(xué)生姓名")
         dates = InputBox("輸入入學(xué)日期")
          ages = 17
          DoCmd.RunSQL "Insert into student Values ('" & name & "'," & age & ",'" & dates & "')"
2)修改表中記錄
 格式:Update 表名 set 字段=數(shù)值  Where 限定條件
 如:DoCmd.RunSQL "Update student set 年齡=20 Where 姓名='李達(dá)'"
3)刪除待定記錄
 格式:Delete from 表名 where 限定條件
 如: DoCmd.RunSQL "Delete from student where 姓名='李達(dá)'" 

3、實(shí)現(xiàn)數(shù)據(jù)完整性約束
1)設(shè)置主鍵
 格式:Alter Table 表名 Add Primary Key (字段名)
 如:DoCmd.RunSQL "Alter Table 導(dǎo)師 Add Primary Key (導(dǎo)師編號(hào))"
2)設(shè)置外鍵
 格式:Alter Table 主表名 Add Foreign Key (字段名) References 從表名
 如:DoCmd.RunSQL "Alter Table 研究生 Add Foreign Key (導(dǎo)師編號(hào)) References 導(dǎo)師"

4、執(zhí)行查詢操作
VBA程序中可以用SQL命令完成數(shù)據(jù)查詢操作,但是無(wú)法直接將查詢結(jié)果所返回的記錄集按數(shù)據(jù)表的形式顯示,解決方法有:
1)將查詢結(jié)果的返回記錄集生成一個(gè)新表保存在數(shù)據(jù)庫(kù)中,然后用ADO記錄集對(duì)象對(duì)這個(gè)表進(jìn)行各種操作,完成后再刪除這個(gè)表;
  Docmd.runSQL "Select 姓名,職稱,年齡  Into temp From 導(dǎo)師 Where 職稱 in('教授','副教授')"
   操作.....
   rsTeacher.Close
   Docmd.runSQL "Drop Table temp"
2)將返回的記錄集看成保存在內(nèi)存中的一個(gè)臨時(shí)表,用ADO記錄集對(duì)象直接打開該查詢指令;


  訪問當(dāng)前數(shù)據(jù)庫(kù)以外的數(shù)據(jù)庫(kù)

1、Access提供了Connection.Open方法以連接另一個(gè)數(shù)據(jù)庫(kù)
2、格式:Connection對(duì)象.Open "Provider=提供者;Date Source=數(shù)據(jù)庫(kù)名;User ID=用戶;PassWord=密碼"
3、其中提供者為Microsoft.Jet.OLEDDB.4.0;數(shù)據(jù)庫(kù)名包括數(shù)據(jù)庫(kù)所在的路徑(包括.mdb文件名);



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多