ACCESSの抽出条件更新方法について

このQ&Aのポイント
  • ACCESSの抽出条件を一括で変更する方法について教えてください。
  • クエリーの条件を数値型で複数選択する方法を教えてください。
  • クエリーに直接条件を入れる方法を試してみましたがうまくいきません。どのように記述すればいいでしょうか。
回答を見る
  • ベストアンサー

ACCESSの抽出条件更新方法について

アクセス素人です。 お世話になります。 質問番号:2664266で 複数のクエリーの条件を一括で変更する場合 モジュールで関数を作ることで下記のように解答されています。 >クエリーの条件に >=GetWhere() >とでもしておいて、 >モジュールのほうで、 >Public Function GetWhere() As String >Dim strWhere As String >strWhere = "#2007/1/1#" >GetWhere = strWhere >End Function 上記は日付についてでありますが クエリーの条件が数値型で、たとえば事業所コードを 複数選択したいときは"#2007/1/1#"の所は どのように記述すればいいのでしょうか。 クエリーに直に条件を入れるときのように strWhere = "1010" or "2010" or "3010" と記述してみましたがうまくいきません。 ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

http://okwave.jp/qa/q2664266.html ですね。 その回答がベストアンサーになってますが、それ、間違ってますね。 その方法でうまくいくのはテキスト型のフィールドが対象の場合です。 Public Function GetWhere() As String と返り値をString型で宣言してますので。 日付型なら、下記のようにする必用があります。 Public Function GetWhere() As Date Dim strWhere As String strWhere = #2007/1/1# GetWhere = strWhere End Function そのページで参考にするなら他の回答の方がいいですね。 内容を理解できてない質問者がベストアンサーを決めるので、必ずしも正しい回答がベストアンサーになるとは限らないのは、ここのシステムの問題点ですね。 また、関数で返せるのは一つの値だけですので、複数の条件を設定するのは無理です。 ANo.1 の回答では、 #2007/1/1# or #2008/1/1# or #2009/1/1# というテキスト型の値としか合致しません。 複数の値と一致する条件を1箇所で入力したいという場合は、条件値を入力するテーブルを用意するのがベストだと思います。 例えば、数値型のフィールドが対象なら、 テーブル名 T_数値条件 フィールド   データ型  条件値  数値型 というテーブルを作製します。 クエリを新規作成して、抽出したいテーブルと T_数値条件 を追加して、抽出対象フィールドと 条件値 フィールドを結合します。 これで、T_数値条件 に入力したデータと一致するものが抽出されます。 日付/時刻型フィールドが対象なら、条件値フィールドも日付/時刻型、 テキスト型フィールドが対象なら、条件値フィールドもテキスト型、 というようにデータ型を同じにします。

1956muh
質問者

お礼

ご回答ありがとうございました。 現在は自宅で「アクセス」環境がありません。 週明けに会社でチャレンジしてみます。 御丁寧な御教授に感謝いたします。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

strWhere = "#2007/1/1# or #2008/1/1# or #2009/1/1#" だと思いますが...

関連するQ&A

  • Access クエリで変数を参照するとき

    モジュールのPublic変数をクエリから参照するとき、 Public Function getdata() As Integer getdata = 1 End Function と記述しておけき、 クエリの抽出条件をgetdata()にしておくと クエリの抽出条件に 「1」 と書いたのと同じになりますが、 クエリの抽出条件の欄に「1 Or 2 Or 3」とした時と同じ状況を作りだしたい時、 モジュールの方には Public Function getdata() As Integer  getdata = 1 Or 2 Or 3 End Function 「・・・・Integer」ではマズイわけで、なんと記述したらよいか教えて下さい。

  • access VBAで検索および抽出が出来ません・・・

    VBA初心者なのですが、あるサンプルデータを参考に顧客管理のフォームを作成しています。 検索条件が未入力なら全リストを、条件入力すれば検索・抽出したいのです。 未入力の場合は全リストが表示されていますが、条件入力すると真っ白になります・・・ リストボックスで表示するようにしています。 なぜ出来ないのか、どなたか詳しく教えてください。宜しくお願いします。 ______________________________________ Private Sub subSetFiler() Dim strWhere As String '変数の初期設定 strWhere = "" 'フリガナを部分一致で検索 If IsNull(Me![txtFurigana]) <> True Then If strWhere <> "" Then strWhere = strWhere & " And" End If strWhere = strWhere & "tm01_Kokyaku.tm01_Furigana Like'*" & Me![txtFurigana] & "*'" End If '物件を部分一致で検索 If IsNull(Me![txtBukken]) <> True Then If strWhere <> "" Then strWhere = strWhere & " And" End If strWhere = strWhere & "tm01_Kokyaku.tm01_Bukken Like '*" & Me![txtBukken] & "*'" End If 'Where文字列の加工 If strWhere <> "" Then strWhere = "Where" & strWhere End If 'リストボックスノ値集合ソース更新 Me![1stKokyakuCode] = Null Me![1stKokyakuCode].RowSource = "SELECT [tm01_Kokyaku].[tm01_Code] AS コード, [tm01_Kokyaku].[tm01_KokyakuName] AS 顧客名, [tm01_Kokyaku].[tm01_Bukken] AS 物件名, [tm01_Kokyaku].[tm01_Gouchi] AS 号地, [tm01_Kokyaku].[tm01_Address1] AS 住所, [tm01_Kokyaku].[tm01_Tel] AS 電話番号 " & _ "FROM tm01_Kokyaku" & _ strWhere & " " & _ "ORDER BY [tm01_Kokyaku].[tm01_Bukken], [tm01_Kokyaku].[tm01_Gouchi]" Me![1stKokyakuCode].Requery

  • Access2010 「演算子がありません」エラー

    フォーム上に別フォームを開くボタンがあるのですが、クリックすると実行時エラーが表示されます。 実行時エラー 3075 クエリ式”コード IN(○○,××)の構文エラー 演算子がありません。 コードを数値型からテキスト型に変更したのが原因だと思います。 エラーが出ない方法を教えていただければ助かります。 よろしくお願いいたします。 Dim rst As Recordset Dim strWhere As String Set rst = Me.RecordsetClone With rst If .RecordCount = 0 Then Beep Exit Sub End If .MoveFirst strWhere = "" Do Until .EOF strWhere = strWhere & IIf(Len(strWhere) > 0, ",", "") & !コード .MoveNext Loop .Close strWhere = "コード IN (" & strWhere & ")" End With DoCmd.OpenForm "フォーム", , , strWhere

  • 帳票フォームの全件のレポート出力

    OS:XP Access Version:2007 抽出されたレコードが帳票フォームで表示されているのですが、 その複数抽出のレコードすべてをレポート出力したいのですが。。。どうすばいいわからなくて どなたかいい方法をおしえてください。 抽出条件コードはこれです。 Private Sub btnSearch_Click() Dim strWhere As String Dim strAndOr As String strWhere = vbNullString If Me.optAndOr.Value = cAnd Then strAndOr = " AND " Else strAndOr = " OR " End If If Me.txtYear.Value <> vbNullString Then strWhere = strWhere & strAndOr & " 年度 LIKE '*" & Me.txtYear.Value & "*'" End If If Me.txtName.Value <> vbNullString Then strWhere = strWhere & strAndOr & " 営業担当 LIKE '*" & Me.txtName.Value & "*'" End If 'WHERE句編集 strWhere = Replace(strWhere, strAndOr, "WHERE", , 1) 'レコードソース書き換えと再クエリ Me.RecordSource = cBaseQuery & " " & strWhere Me.Requery End Sub

  • Access2007の初心者です。VBAの記述で困っています、お力添え

    Access2007の初心者です。VBAの記述で困っています、お力添えお願いします。 チェックボックスにチェックが入っている場合に、誕生日が空白のものを抽出する部分のVBAの 記述のところで躓いているのだと思っています。 ■テーブルの情報 ・テーブル名:T_会員情報 ・T_会員情報のフィールド:会員名(テキスト形式)・性別(数値型)・誕生日(日付/時刻型) ■実現したいこと ・T_会員情報で、「検索」ボタンを押下したら、条件にあった情報がフォーム上に抽出できるもの。 ■用意したフォーム T_会員情報の連結フォーム ・フォーム上には以下を用意  ◆「性別」の非連結コンボボックス:txtSeibetsu  ◆「誕生日が空白」という非連結チェックボックス:chkBirthday  ◆「AND OR」のいずれかが選択できるオプションボタン  ◆「検索ボタン」  ◆「会員名」「性別」「誕生日」のT_会員情報の帳票フォーム ■VBA Option Compare Database Option Explicit Const cAnd = 1 Const cOr = 2 Const cBaseQuery = "SELECT * FROM T_会員情報" Private Sub 検索ボタン_Click() Dim strWhere As String Dim strAndOr As String strWhere = vbNullString If Me.optAndOr.Value = cAnd Then strAndOr = " AND " Else strAndOr = " OR " End If '性別検索 If ISNull(Me.txtSeibetsu.value)=False Then strWhere = strWhere & strAndOr & " 性別 = " & Me.txtSeibetsu.Value End If '誕生日空白検索 If Me.chkBirthday=False Then strWhere = strWhere & strAndOr & " 誕生日= " & Null End If 'WHERE句編集 strWhere = Replace(strWhere, strAndOr, "WHERE", , 1) 'レコードソース書き換えと再クエリ Me.RecordSource = cBaseQuery & " " & strWhere Me.Requery End Sub 誕生日が空白の検索のところの記述が問題だと思っています。 初心者でよくわかっておりません。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いします。

  • アクセスでのテキストボックスの複数条件での抽出

    Private Sub 検索_Click() Dim strFilter1 As String Dim strFilter2 As String Dim strFilter3 As String strFilter1 = "学校名 = '" & 学校名1 & "'" strFilter2 = "学校区分 = '" & 学校区分1 & "'" strFilter3 = "キャンパス = '" & キャンパス1 & "'" Me.Filter = strFilter1 & " or " & strFilter2 & " or " & strFilter3 Me.FilterOn = True End Sub (1)学校名・(2)学校区分・(3)キャンパスと3つのテキストボックスがあり 3つの抽出条件を満たすレコードをフォームに表示させたいのですが 学校名を仮に早稲田大学といれ絞れるのですが次に学校区分を大学 と入れるとほか大学も抽出されてしまいます。 学校名を抽出させたら、その範囲で学校区分の大学を抽出させたいのですが どのようにすればいいのでしょうか? (1)のみの抽出の場合や(1)と(2)のみの 場合があるのでandの完全一致ではありません。

  • アクセス複数の条件で同じ書式をつけるには?

    条件付き書式です。(しかもVBAです) 一つのフィールドに対して違う条件だけど同じ書式をつけたい時、 まとめる事は出来ないのでしょうか? 例えばフォールド1の「あ」と「い」を赤にしたい場合、 Sub test01() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""" And "[" & Field & "]=""い""") .ForeColor = 225 End With End With End With End Sub のような事は出来ないのでしょうか? これをすると 実行時エラー:型が一致しません。(Error 13) になります。 素直に、 Sub test02() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""") .ForeColor = 225 End With With .Add(acExpression, , "[" & Field & "]=""い""") .ForeColor = 225 End With End With End With End Sub としなくちゃダメでしょうか? 何故こんな事がしたいかと言うと、3つ以上やりたい条件がありので、 同じ書式のものはまとめたいのです。 ご教授よろしくお願いします。

  • エクセルの複数条件抽出

    エクセルで複数条件のカウントをしようと思い、下のマクロを作成しました。 うまくカウントができないのですが、どこらへんが間違っていますでしょうか? (実際にはもっと多くのデータで利用を予定しており、小さいものでテストしています) よろしくお願いします。 Dim c1 As String Dim c2 As String Dim ans As Long Dim ws As Worksheet Dim b As Long, a As Long Set ws = Worksheets("date") For b = 2 To 4 For a = 3 To 5 c1 = Cells(a, 1).Value c2 = Cells(2, b).Value With ws.Range("B2:C7") ans = Evaluate("sumproduct((" & .Columns("c").Address & "=""" & c1 & """)*(" & .Columns("B").Address & "=""" & c2 & """))") Worksheets("a").Cells(a, b).Value = ans End With Next a Next b End Sub

  • アクセス フィールド名の変更

    フィールド名 [1],[2],・・・・を [090701],[090702],・・・ に変更するように Dim i As String Dim ret As String ret = InputBox("入力例  090701") i = ret DoCmd.RunSQL "SELECT [クエリ112].[1] AS [" & i & "], [クエリ112].[2] AS [" & i + 1 & "], ........中略 End Sub としましたが [090701],[90702],[90703],・・・ 2番目から 090702 になりません。 どのようにすればよいのか教えていただけませんか。

  • アクセス97のモジュール内で使われるSQLstatementについて

    アクセス97のモジュールのプロシージャで例えば 以下のようにプロシージャ内で、SQLstatmentが 使われている時の解読の仕方がわかりません。 普通のSQL文として読んでよいのでしょうか? また、SQLstatment = SQLstatment & """" の使い方がよくわかりません。 ヘルプやインターネットでもSQLstatmentについて探してみたのですが、 解決できませんでした。教えてください。 Public Function あいうえお As String Dim dbs As Database Dim rds As Recordset Dim SQLstatment As String SQLstatment = "SELECT テーブル1.名前,テーブル1.顧客番号 " _ & "FROM テーブル1 " _ & "WHERE テーブル1.名前 = " SQLstatment = SQLstatment & """" Set dbs = CurrentDb Set rds = dbs.OpenRecordset(SQLstatment)  :  :  : End Function

専門家に質問してみよう