Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6724 / 9994 ←次へ | 前へ→

【6469】Re:ではサンプルをまた一つ
回答  小僧  - 05/10/13(木) 12:00 -

引用なし
パスワード
   ▼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さん のやりたい事と
  ずれているかもしれません。

402 hits

【6460】フィールドの選択について Saiyama 05/10/12(水) 22:44 質問
【6461】Re:フィールドの選択について たん 05/10/13(木) 9:16 回答
【6463】Re:フィールドの選択について Saiyama 05/10/13(木) 9:40 質問
【6466】Re:サンプルならネットに山のようにある たん 05/10/13(木) 10:41 回答
【6469】Re:ではサンプルをまた一つ 小僧 05/10/13(木) 12:00 回答
【6472】Re:フィールドの選択について 05/10/13(木) 12:19 回答
【6475】Re:ではサンプルをまた一つ Saiyama 05/10/13(木) 18:13 質問
【6479】Re:ではサンプルをまた一つ 小僧 05/10/14(金) 8:46 発言
【6506】Re:ではサンプルをまた一つ Saiyama 05/10/16(日) 20:56 質問
【6507】Re:ではサンプルをまた一つ 小僧 05/10/16(日) 21:35 発言
【6522】Re:ではサンプルをまた一つ Saiyama 05/10/17(月) 22:34 質問
【6524】Re:ではサンプルをまた一つ 小僧 05/10/18(火) 9:04 発言
【6526】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 9:53 質問
【6527】Re:ではサンプルをまた一つ 小僧 05/10/18(火) 10:07 回答
【6528】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 10:21 質問
【6529】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 10:44 質問
【6530】Re:ではサンプルをまた一つ 小僧 05/10/18(火) 10:54 回答
【6533】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 11:40 質問
【6535】Re:ではサンプルをまた一つ 小僧 05/10/18(火) 11:49 発言
【6539】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 14:55 質問
【6541】Re:ではサンプルをまた一つ 小僧 05/10/18(火) 15:19 回答
【6542】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 15:28 質問
【6543】Re:ではサンプルをまた一つ 小僧 05/10/18(火) 15:55 発言
【6547】Re:ではサンプルをまた一つ Saiyama 05/10/18(火) 18:28 お礼

6724 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078242
(SS)C-BOARD v3.8 is Free