Access フォームのテキストボックスに入力した年月でテーブルのフィールド名を検索し、レコードを表示させることはできるのでしょうか?
方法があればご教授ください。
よろしくお願いします(❁ᴗ͈ˬᴗ͈)

A 回答 (3件)

>Dim myDB As Databaseでコンパイルエラーで『ユーザ定義型は定義されていません。

』のエラーが出るのですがどうしたら良いでしょうか…?

Dim myDB As Database → Dim myDB As DAO.Database
Dim myTB As TableDef → Dim myTB As DAO.TableDef
このように DAO. を付けてみたらどうですか?

それでもエラーが出るようでしたら、Accessのバージョンと、VBAエディタ のツールにある「参照設定」で
チェックの入っている項目を教えてください。

Access2000か2002でしたら、参照設定で Microsoft DAO 3.6 Object Library にチェックが入っていないのかも。。。。
    • good
    • 0
この回答へのお礼

助かりました

出来ました!
ありがとうございました。

お礼日時:2017/05/24 18:29

フィールド名を検索する部分ですが、以下の方法ではどうでしょうか?


レコードの表示に関しては、どのように表示させたいのか、もう少し具体的に書いていただけると
回答も出やすいのではと思います。

例えばテーブルAに日付型のフィールドが1しかない場合はそのフィールド名を見つけ、
そのフィールド名の中からフォームで指定された日付のレコードを抽出してはどうでしょうか。

Dim myDB As Database
Dim myTB As TableDef
Dim TBcnt As Integer
Dim I As Integer

Set myDB = CurrentDb
Set myTB = myDB.TableDefs!テーブルA

'テーブルのフィールド数も変動すると仮定して、フィールド数を取得
TBcnt = myTB.Fields.Count

For I = 0 To TBcnt - 1 Step 1

  'フィールドの型が日付型だったらフィールド名を取得
If myTB.Fields(I).Type = dbDate Then
Debug.Print myTB.Fields(I).Name
End
End If

Next


テーブルAに日付型のフィールドが複数ある場合はフォームで指定された日付を探すしかないと思います。

Dim myDB As Database
Dim myRS As Recordset
Dim TBcnt As Integer
Dim myDATE As Date
Dim I As Integer

Set myDB = CurrentDb
Set myRS = myDB.OpenRecordset("テーブルA", dbOpenTable)

'フォームから日付を取得
myDATE = Me.Txt日付
TBcnt = myRS.Fields.Count

myRS.MoveFirst
Do Until myRS.EOF
For I = 1 To TBcnt - 1 Step 1
If myRS(I) = myDATE Then
Debug.Print myRS.Fields(I).Name
End If
Next
myRS.MoveNext
Loop
    • good
    • 0
この回答へのお礼

すみません。
Dim myDB As Databaseでコンパイルエラーで『ユーザ定義型は定義されていません。』のエラーが出るのですがどうしたら良いでしょうか…?

お礼日時:2017/05/18 14:41

質問の意味がちょっと分からないのですが、


フォームAに例えば 「Txt年月」という非連結のテキストボックスがあり、
テーブルAには、どこかのフィールドに年月を格納している場所があるということですか?

そして、Txt年月に入れた値を元にテーブルAのフィールド名を探して、
そのフィールド名とTxt年月の値とマッチするテーブルAのレコード全てを
抽出するということでしょうか?
    • good
    • 0
この回答へのお礼

そうです!
わかりにくくてすみません(>人<;)

お礼日時:2017/05/17 18:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報