AccessVBA テーブル内のフィールド名を検索して処理
スポンサーリンク
テーブル内に同じカテゴリーのフィールドが複数ある場合があります。
例えば、氏名1、氏名2、氏名3 といったようにフィールド名の末尾に数字をつけて登録しているようなケースです。
このようなケースで、同じカテゴリーのフィールドに同一の処理を行う場合のコード描いて見ました。
サンプルコードでは、テーブル名というテーブル内に氏名1〜5までフィールドがあり、
そのフィールドに登録がある人数をカウントし、人数フィールドに代入するというものです。
以下、VBAの記述。
'---------------------------------------------------------------------------------------------
Function countFld
Dim db As Database
Dim rst As Recordset
Dim strSQL As String
Dim i As Integer '同じカテゴリー末尾の数値
Dim cnt As Integer
Dim fldName As String
Set db = CurrentDb
strSQL = "SELECT*FROM [テーブル名];"
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
’処理対象のフィールド名
fldName = "氏名"
i = 0 '初期値
cnt = 0
Do Until rst.EOF
rst.Edit
For i = 1 To 5 'フィールド名末尾の数値1〜5までForで繰り返し
’rst(fldName & i)で対象フィールド名を定義
’Null及び空文字フィールド以外をカウント
If Not IsNull(rst(fldName & i)) And Len(Trim(rst(fldName & i))) > 0 Then
cnt = cnt + 1
End If
Next i
'カウントした結果を代入するフィールド
rst!人数 = cnt
cnt = 0
rst.Update
rst.MoveNext
Loop
db.Close
Set db = Nothing
End Function
'---------------------------------------------------------------------------------------------------
以上、VBAの記述終わり。
TableDefs オブジェクトを使ってもイケそうな気がしていますので、それはまた別の機会に書いてみたいと思います。