乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       昵稱(chēng)2548375 2018-09-18

       ADO對(duì)象

      1、Access內(nèi)嵌的VBA是用ADO技術(shù)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用的主要工具,ADO是目前Microsoft通用的數(shù)據(jù)訪問(wèn)技術(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ǔ)句訪問(wèn)、查詢(xún)和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),實(shí)現(xiàn)Recordset對(duì)象無(wú)法實(shí)現(xiàn)的操作(數(shù)據(jù)表級(jí)別的操作),可以使用DoCmd代替;
      3)Recordset對(duì)象:ADO最為常用的、重要的對(duì)象,可以訪問(wèn)表和查詢(xún)對(duì)象,返回的記錄儲(chǔ)存在Recorderset對(duì)象中,主要執(zhí)行的操作:
           ①查詢(xún)數(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、聲明和打開(kāi)Recordset對(duì)象
      1)聲明、初始化Recordset對(duì)象
      Dim rsName As ADODB.Recoreset
      set rsName = new ADODB.Recordset
      2)打開(kāi)一個(gè)Recordset對(duì)象
      使用Recordset的Open方法可以打開(kāi)數(shù)據(jù)表、查詢(xún)對(duì)象、或直接引用SQL查詢(xún)語(yǔ)句
      rsName.Open source, ActiveConnection, CursorType,LockType,Option
      常用Option類(lèi)型  
      adCmdTable 表類(lèi)型
      adCmdText 命令文本
      adCmdStoredProc 過(guò)程
      adCmdUnKnowm 不指定內(nèi)容

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


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


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

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


        通過(guò)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屬性分別記錄指針是否在文件開(kāi)始、文件末尾;
          如果記錄集指針指向某記錄時(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 開(kāi)放式鎖定,編輯數(shù)據(jù)時(shí)不鎖定數(shù)據(jù),只在調(diào)用Update方法提交數(shù)據(jù)時(shí)才鎖定數(shù)據(jù)源記錄
      adLockBathOptimistic 開(kāi)方式更新,應(yīng)用于批更新模式



       通過(guò)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方法將記錄集指針定位到最后一條記錄中;





        通過(guò)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ù)類(lèi)型.....)
       如:DoCmd.RunSQL "Create Table 研究生(姓名 text(6),年齡 byte,入學(xué)日期 date)"
      2)增加字段
       格式:Alter Table 表名 Add 字段名 數(shù)據(jù)類(lèi)型
       如:DoCmd.RunSQL "Alter Table student Add 學(xué)費(fèi) currency"
      3)改變字段類(lèi)型
       格式:Alter Table 表名 Alter 字段名 新數(shù)據(jù)類(lèi)型
       如: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í)行查詢(xún)操作
      VBA程序中可以用SQL命令完成數(shù)據(jù)查詢(xún)操作,但是無(wú)法直接將查詢(xún)結(jié)果所返回的記錄集按數(shù)據(jù)表的形式顯示,解決方法有:
      1)將查詢(xún)結(jié)果的返回記錄集生成一個(gè)新表保存在數(shù)據(jù)庫(kù)中,然后用ADO記錄集對(duì)象對(duì)這個(gè)表進(jìn)行各種操作,完成后再刪除這個(gè)表;
        Docmd.runSQL "Select 姓名,職稱(chēng),年齡  Into temp From 導(dǎo)師 Where 職稱(chēng) in('教授','副教授')"
         操作.....
         rsTeacher.Close
         Docmd.runSQL "Drop Table temp"
      2)將返回的記錄集看成保存在內(nèi)存中的一個(gè)臨時(shí)表,用ADO記錄集對(duì)象直接打開(kāi)該查詢(xún)指令;


        訪問(wèn)當(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=用戶(hù);PassWord=密碼"
      3、其中提供者為Microsoft.Jet.OLEDDB.4.0;數(shù)據(jù)庫(kù)名包括數(shù)據(jù)庫(kù)所在的路徑(包括.mdb文件名);



        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(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)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多