まず、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
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) レコードセットの更新を使用します新しいレコードを更新および維持するメソッド; 'レコード セットの年齢フィールドのすべての値 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 Sub3. レコードを削除するには 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 サイトの他の関連記事を参照してください。