ここから本文です

Access2010のDAOによるSQLレコード抽出についてお尋ねしたいです。 フォームにレ...

con********さん

2018/7/1917:30:55

Access2010のDAOによるSQLレコード抽出についてお尋ねしたいです。
フォームにレコード反映がされない理由がよくわからず、困っています。

【ファイル】
test①ファイル:配布用
test②ファイル:共有フォルダ内に格納(パスワード保護あり、パスワード:test)

【ファイル中身】
test①ファイル:検索語句入力用フォーム[Ftest](テキストボックス1つ(txt1)、OKボタン1つ)
結果表示用フォーム[kekka](テキストボックス4つ、次へボタン1つ)

test②ファイル:データテーブル3つ
テーブル名:店名(フィールド:No、店名)
住所(フィールド:No、住所)
電話番号(フィールド:No、電話番号)
各テーブルのNoは、重複なし。

【やりたいこと】
配布用ファイルにあるテキストボックスに入力した数字、文字列で、共有フォルダ内のパスワード付きファイル内からデータ抽出を行いたい。抽出方法は、店名の[No](テキスト型で数字のみ)もしくは、店名の[店名](テキスト型で文字列)のフィールドにおいてあいまい検索で行う。各テーブルは左外部結合で結ぶ。SQLで抽出し、結果表示用フォームの各テキストボックスに表示させる。複数抽出レコードの際は「次へボタン」で次のレコードを表示させる。なお、VBAによるテーブルリフレッシュで時間がかかることが判明したため、リンクテーブルは使用しない。あくまで検索ボタンを押して、接続を都度行う。各テーブルデータを1つにまとめることはせず、外部結合をもって検索する。

【考えたVBA】
結果表示用フォーム open時
Private Sub Form_Open(Cancel As Integer)
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim SQL, strSQL, As String

strFileName = "C:\Users\user\desktop\dao2\dao2.accdb"(本来は共有フォルダパス)

strSQL = "SELECT 店名.No, 店名.店名,住所.住所, 電話番号.電話番号 "
strSQL = strSQL & "FROM (店名 LEFT JOIN 住所 ON 店名.No = 住所.No) LEFT JOIN 電話番号 ON 店名.No = 電話番号.No "
strSQL = strSQL & "WHERE (((店名.No) like '*" & [Forms]![Ftest]![txt1] & "*')) OR (((店名.店名) like '*" & [Forms]![Ftest]![txt1] & "*'))"

Set DB = OpenDatabase(strFileName, False, False, ";pwd=test")
Set RS = DB.OpenRecordset(strSQL)

Do Until RS.EOF
Me.t1 = RS!No
Me.t2 = RS!店名
Me.t3 = RS!住所
Me.t4 = RS!電話番号
RS.MoveNext
Loop

RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing

End Sub


(次へボタン)未検証
Private Sub 次へボタン_Click()
DoCmd.GoToRecord , "", acNext
End Sub

【できないこと】
イミディエイトウィンドウで複数抽出確認をしているが、結果表示用フォームには、最後に抽出されたレコードのみしか表示されず、抽出されたレコードがすべて表示できない。

おかしなことを言っているとは思いますが、ご教示ください。よろしくお願いいたします。

閲覧数:
96
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ony********さん

2018/7/1918:51:14

同じコントロールに上書きしてるだけなので、最後の1件しか表示されません。

Do Until RS.EOF
Me.t1 = RS!No
Me.t2 = RS!店名
Me.t3 = RS!住所
Me.t4 = RS!電話番号
RS.MoveNext
Loop


抽出したデータをローカルテーブルに登録(追加クエリかVBAならAddNew)して、そのローカルテーブルを検索結果として表示するようなことはよくやります。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる