ホームページ  >  記事  >  トピック  >  ADO技術を利用してアクセスデータベースを操作する方法

ADO技術を利用してアクセスデータベースを操作する方法

王林
王林転載
2020-11-17 16:22:294020ブラウズ

ADO技術を利用してアクセスデータベースを操作する方法

まず、ADO オブジェクトを紹介します:

1. Access に埋め込まれた VBA は、ADO テクノロジを使用してデータベース アプリケーションを開発するための主要なツールです。ADO は現在、 Microsoft データ アクセス テクノロジに共通;

2. ADO オブジェクト モデルには、接続、レコードセット、レコード、コマンド、パラメーター、フィールド、プロパティ、ストリーム、エラーの 9 つのオブジェクトが含まれます;

関連する推奨事項: アクセス データベース チュートリアル

3. 主要な ADO オブジェクトの紹介:

1) 接続オブジェクト: ADO オブジェクト モデルの最上位オブジェクトであり、アプリケーションとデータ ソース間の接続 ;

2) コマンド オブジェクト: 主に VBA の SQL ステートメントを使用して、データベース内のデータにアクセス、クエリ、変更し、Recordset オブジェクト (データ) では実現できない操作を実現します。テーブル レベルの操作)、代わりに DoCmd を使用できます。

3) Recordset オブジェクト: ADO で最も一般的に使用される重要なオブジェクトで、テーブルにアクセスしてオブジェクトをクエリできます。返されたレコードは Recordset オブジェクトに格納されます。主な操作は次のとおりです。

① データ テーブルのクエリ データ テーブルのデータ;

②データ テーブルのデータの追加;

③データ テーブルのデータを更新します。

④データ テーブル内の特定のデータを削除します;

Access での ADO オブジェクトの参照

1. Access が ADO​​ を参照する手順:

①ADO を宣言して初期化します。 Connection オブジェクト;

②Recordset オブジェクトを作成し、プログラミング An 操作を完了します;

③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

ADO技術を利用してアクセスデータベースを操作する方法

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 つのメソッドが用意されています

ADO技術を利用してアクセスデータベースを操作する方法

#2. BOF 属性と EOF 属性は、ポインターがファイルの先頭と末尾にあるかどうかをそれぞれ記録します。

レコードセット ポインターがレコードを指す場合、BOF と EOF は両方ともfalse;

'フォーム コンポーネントのボタン イベントを追加します: 次のレコードを参照します

Priavte Sub ComomndNext_Click()
     rsDemo.MoveNext
     If rsDemo。EOF Then
          rsDemo.MoveFirst
     End If
End Sub

3. Recordset オブジェクトの LockType 属性のデフォルトは adLockReadOnly (読み取り専用)

ADO技術を利用してアクセスデータベースを操作する方法

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 Sub

2 があると仮定して、レコード ボタン イベントを追加します。Update メソッドを使用してレコード

1) レコードセット ポインターを検索して、変更する必要があるレコードに移動します;

2) レコード内の各フィールドの値を変更します;

3) レコードセットの更新を使用します新しいレコードを更新および維持するメソッド;

'レコード セットの年齢フィールドのすべての値 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命令"

または:

     Dim s AS String
     s = "SQL命令"
     DoCmd.RunSQL s

1データの定義

1) データ テーブルの作成

形式: Create Table テーブル名 (フィールド名 データ型...)

例: DoCmd.RunSQL "Create Table大学院生 (名前 text(6)、年齢バイト、入学日 date)"

2) フィールドを追加します

形式: Alter Table テーブル名 フィールド名のデータ型を追加します

 如: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技術を利用してアクセスデータベースを操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。