カレントデータベース接続
Dim DB As DAO.Database
Set DB = CurrentDb

カレント以外のデータベース接続
Dim DB As DAO.Database
Set DB = OpenDatabase(CurrentProject.Path & "\Sample.mdb")

カレントレコード表示
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
RS![フィールド名].Value
RS![フィールド名]
RS!Fields("フィールド名")
RS!Fields.Item("フィールド名")
RS(インデックス番号)

テーブル名取得
Dim DB As DAO.Database
Set DB = CurrentDb
DB.TableDefs(インデックス番号).Name

フィールド名
Dim TD as TableDef
Set TD = DB.TableDefs!テーブル名
TD.Fields(インデックス番号).name

テーブルのフィールドの数
Dim TD as TableDef
Set TD = DB.TableDefs!テーブル名
TD.Fields.Count

レコードセットのフィールド数
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
RS.Fields.Count

テーブルのレコード数
Dim TD as TableDef
Set TD = DB.TableDefs!テーブル名
TD.RecordCount

レコードセットのレコード数
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
RS.RecordCount

カレントレコードの移動
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
RS.MoveFirst
RS.MoveNext
RS.Move(移動レコード数)
RS.MoveLast
RS.MovePrevious

BOF EOF 最初レコードの前、最後レコードの後
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
Do Until RS.EOF
RS.MoveNext
Loop
RS.MoveLast
Do Until RS.BOF
RS.MovePrevious
Loop
レコードが無い
If RS.BOF And RS.EOF Then MsgBox "レコードがない"
Find レコード検索
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenDynaset) '★ダイナセットかスナップショット
最初のレコードから検索条件で検索
RS.FindFirst "フィールド名=〇〇"
最後のレコードから検索条件で検索
RS.FindLast "フィールド名=〇〇"

If RS.NoMatch then MsgBox "条件を満たすレコード無し"

後へ次の検索
RS.FindNext
前へ次の検索
RS.FindPrevious

Seek 高速検索
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable) '★テーブルタイプ
RS.Index = "PrimaryKey"
RS.Seek "=", "1112"
If RS.NoMatch Then MsgBox "条件を満たすレコード無し"

Filter レコード抽出
Dim RS as DAO.Recordset
Dim RS2 as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenDynaset) '★ダイナセットかスナップショット
RS.Filter = "フィールド名 = '〇〇'"
Set RS2 = RS.OpenRecordset
If RS.EOF Then "条件を満たすレコード無し"

Sort レコード並替
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenDynaset) '★ダイナセットかスナップショット
RS.Sort = "フィールド1 DESC, フィールド2 ASC"
Set RS = RS.OpenRecordset

ブックマーク
Dim RS as DAO.Recordset
Dim BM as Variant
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
BM = RS.Bookmark
RS.MoveLast
RS.Bookmark = BM

カレントレコードの位置
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
Debug.Print RS.AbsolutePosition '1レコード目を0とした位置
Debug.Print RS.PercentPosition '全体を100としたパーセンテージ位置

レコード追加
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
With RS
.AddNew
!フィールド1 = ○○
!フィールド2 = □□
.Update
End With

レコード更新
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenDynaset) '★dbOpenDynaset
With RS
.Edit
!フィールド1 = ○○
!フィールド2 = □□
.Update
End With

レコード削除
Dim RS as DAO.Recordset
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable)
RS.Delete

テーブル作成・フィールド作成
Dim TD as TableDef
Dim FD as DAO.Field
Set TD = DB.CreateTableDef("テーブル名")
With TD
  '----------------
.Fields.Append .CreateField("フィールド1", dbText, 4)
.Fields.Append .CreateField("フィールド2", dbLong)
  '----------------
Set FD = .CreateField
With FD
.Name = フィールド1
.Type = dbText
.Size = 4
End With
.Fields.Append FD
  '----------------
Set FD = .CreateField("フィールド1", dbText, 4)
.Fields.Append FD
End With
DB.TableDefs.Append TD

フォームのレコードからレコードセットクローンを作る '★CloneはADOではダメ
Dim RS as DAO.Recordset
Set FormName as String
FormName = "フォーム名"
DoCmd.OpenForm FormName, acNormal
Set RS =Forms(FormName).RecordsetClone

カレントレコードとフォームのレコードを連動
Dim RS as DAO.Recordset
Set FormName as String
FormName = "フォーム名"
DoCmd.OpenForm FormName, acNormal
Set RS = Forms(FormName).RecordsetClone '★CloneはADOではダメ
Forms(FormName).Bookmark = RS.Bookmark


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ