Access VBA質問箱 IV

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

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


1460 / 2272 ツリー ←次へ | 前へ→

【7047】クエリの抽出条件(Where句)について 06/1/10(火) 20:59 質問[未読]
【7055】Re:クエリの抽出条件(Where句)について 小僧 06/1/11(水) 11:35 発言[未読]
【7060】Re:クエリの抽出条件(Where句)について 06/1/11(水) 12:00 質問[未読]
【7074】Re:クエリの抽出条件(Where句)について 小僧 06/1/11(水) 14:29 回答[未読]
【7083】Re:クエリの抽出条件(Where句)について 06/1/11(水) 17:04 質問[未読]
【7090】Re:クエリの抽出条件(Where句)について 小僧 06/1/12(木) 8:50 回答[未読]
【7092】Re:クエリの抽出条件(Where句)について 06/1/12(木) 8:57 お礼[未読]

【7047】クエリの抽出条件(Where句)について
質問   E-MAIL  - 06/1/10(火) 20:59 -

引用なし
パスワード
   既存のクエリに対し、Where句のみを設定する方法ってありますか?
かなり多くのテーブルをリレーションで結合しているので、VB上に
SQL文を書くと複雑でわかり難いため、(初心者なので)抽出条件のみ
VBで出来ないかと悩んでいます。

クエリの名称は:実績データ一覧
抽出条件となるフィールドは:氏名と作業年月日

【7055】Re:クエリの抽出条件(Where句)について
発言  小僧  - 06/1/11(水) 11:35 -

引用なし
パスワード
   ▼爺 さん:
こんにちは。

>クエリの名称は:実績データ一覧
>抽出条件となるフィールドは:氏名と作業年月日

このクエリをどのように使うのかが解りませんが、
パラメータクエリにするのはいかがでしょうか。

実績データ一覧 の氏名欄に [氏名を入力]
       作業年月日欄に [日付を入力]

としてクエリを実行すると、入力を求められると思います。


このパラメータはフォームの値を持ってくる事も可能ですので、

[Forms]![フォーム名]![txt氏名]
CDate([Forms]![フォーム名]![txt作業年月日])

のようなパラメータを付ける事も可能です。


VBA から操作する際にも ADO 、DAO 共にパラーメータを付加してから
クエリを開く事もできます。

【7060】Re:クエリの抽出条件(Where句)について
質問   E-MAIL  - 06/1/11(水) 12:00 -

引用なし
パスワード
   回答ありがとうございます。

>このクエリをどのように使うのかが解りませんが、

説明不足で申し訳ありませんでした。

クエリの使用方法については、最終的にエクセルへ出力したいと思っています。
(エクセルへのエクスポート時にもエラーがでて困っています・・。本日質問
をしています。質問【エクセルへのエクスポート】)

>パラメータクエリにするのはいかがでしょか
パラメータクエリですと、入力の手間が多いため他の方法としたいと考えています。
既存のクエリに対し、Where句だけをVBで設定する方法は無いのでしょうか?

【7074】Re:クエリの抽出条件(Where句)について
回答  小僧  - 06/1/11(水) 14:29 -

引用なし
パスワード
   ▼爺 さん:
こんにちは。

>クエリの使用方法については、最終的にエクセルへ出力したいと思っています。
>既存のクエリに対し、Where句だけをVBで設定する方法は無いのでしょうか?

そうなると、レコードセットが取得できれば良い、という事ですね。

Sub Where句をつけてクエリを開く()
'要参照設定 Microsoft DAO x.x Object Library
Dim RS As DAO.Recordset
Dim strSQL As String
Dim strName As String
Dim strDate As Date

  strName = "鈴木一郎"
  strDate = #1/11/2005#

  strSQL = "SELECT * FROM 実績データ一覧 " _
      & "WHERE 氏名 = '" & strName & "' And " _
         & "作業年月日 = #" & strDate & "#"

  Set RS = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
  '
  'エクスポート処理
  '
  RS.Close: Set RS = Nothing
End Sub

こんな感じでいかがでしょうか。

【7083】Re:クエリの抽出条件(Where句)について
質問   E-MAIL  - 06/1/11(水) 17:04 -

引用なし
パスワード
   ありがとうございます。
教えて頂いた、パラメータクエリを元に何とか完成しつつあります。
一つエラーがでて困っているのが、

qry.Parameters("期間を入力") = "Between #" & Sdate & "# and #" & Edate & "#"

上記のコードを記入すると、「抽出条件で型が一致しない」というエラーがでます。
何処が間違っているのか教えて頂けないでしょうか?
”氏名”については、上記と同様なコードで問題なく抽出できております。

ちなみに、変数はこの様に宣言しています。
Dim Sdate as Date
Dim Edate as Date

【7090】Re:クエリの抽出条件(Where句)について
回答  小僧  - 06/1/12(木) 8:50 -

引用なし
パスワード
   ▼爺 さん:おはようございます。

>qry.Parameters("期間を入力") = "Between #" & Sdate & "# and #" & Edate & "#"
>
>上記のコードを記入すると、「抽出条件で型が一致しない」というエラーがでます。


上記の様にパラメータを指定すると「期間を入力」の所のWhere句は

Where 作業年月日 = Between #yyyy/mm/dd# and #yyyy/mm/dd#

となり、構文自体がおかしくなってしまいますね。

開始日と終了日でパラメータをセットするのであれば

抽出条件に Between [開始日] AND [終了日]

qry.Parameters("開始日") = Sdate
qry.Parameters("終了日") = Edate

でどうでしょうか。

※ Sdate、Edate 共に日付型で宣言しているのであれば、# で囲まなくても大丈夫ですね。

【7092】Re:クエリの抽出条件(Where句)について
お礼   E-MAIL  - 06/1/12(木) 8:57 -

引用なし
パスワード
   ありがとうございます。解決しました。

1460 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free