|
▼Saiyamaさん、たん さん:
こんにちは。
>VBAで動的にSQL文の方法をお願いいたします。
これでは回答する方も回答しにくいですよ ^^;
動的にフィールドを選ぶ方法まで回答者に考えさせてはだめですよ。
今回はどのフィールドを選択するかをユーザがリストボックスから選んで
実行ボタンを押すとクエリが作成される例です。
適当なフォームを作成し、
リストボックス: lstフィールド名
コマンドボタン: クエリ作成
を配置して下さい。
lstフィールド名の方は複数選択を「標準」に設定して下さい。
まず、フォームの読み込み時のイベントに
Private Sub Form_Load()
'要参照 DAO x.x Object Library
Dim RS As DAO.Recordset
Dim i As Long
Me.lstフィールド名.RowSourceType = "Value List"
Set RS = CurrentDb.OpenRecordset("テーブル名", dbOpenSnapshot)
For i = 0 To RS.Fields.Count - 1
Me.lstフィールド名.AddItem RS(i).Name
Next
RS.Close: Set RS = Nothing
End Sub
のようにイベントを組み込みます。
これでフォームを開くと、リストボックスにフィールドの一覧が表示されると思います。
次にコマンドボタンのクリック時のイベントに
Private Sub クエリ作成_Click()
Dim varS As Variant
Dim strSQL As String
Dim QD As DAO.QueryDef
If DCount("*", "MSysObjects", "Name = 'Q_Temp'") > 0 Then _
DoCmd.DeleteObject acQuery, "Q_Temp"
For Each varS In Me.lstフィールド名.ItemsSelected
strSQL = strSQL & "," & Me.lstフィールド名.ItemData(varS) & " "
Next
strSQL = "SELECT " & MID(strSQL, 2) _
& "FROM テーブル名"
Set QD = CurrentDb.CreateQueryDef("Q_Temp", strSQL)
QD.Close: Set QD = Nothing
End Sub
のように記述します。
リストボックスで選択したフィールドを持つクエリが作成されると思われます。
上記のコードで解らないことがありましたら遠慮なさらずに質問なさって下さいね。
※ あくまでも動的に SQL を作成する例なので Saiyamaさん のやりたい事と
ずれているかもしれません。
|
|