AccessVBAメモ

AccessVBAで作ったサンプルコード集

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 オブジェクトを使ってもイケそうな気がしていますので、それはまた別の機会に書いてみたいと思います。