• ベストアンサー

チェックボックスの条件抽出

こんにちわ 当方、ACCESS VBAを使っていてただいまとても困った状態に陥っています。 教科テーブルの中に1年というYes/No型のデータが入っているとします。 それにチェックが入っているものだけを抽出して開くというようにしたいのですが、うまくいきません。 以下の文のように記述してみましたが、うまくいきませんでした。 rs.Open "SELECT * FROM 教科テーブル WHERE 1年='" & True & "';", cn エラーメッセージは '1年='True" の構文エラー;演算子がありません とでました。 どなたか助けてください。 お願いします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

#1の方の回答では >'1年='True" の構文エラー;演算子がありません これの対処になっていません。本来なら「抽出条件でデータ型が一致しません」となるはずです。 ということでもう1ヶ所修正が必要な個所があります。 1年というフィールドですが、実はフィールド名の先頭を数字にするのはお勧めしません。SQL文中でフィールド名ではなく数値とみなされるからです。 このため、フィールド名であるということを明示的に示す必要がありますので、 rs.Open "SELECT * FROM 教科テーブル WHERE [1年] = True;", cn とする必要があります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#182251
noname#182251
回答No.2

既に正解が出ているので、余計なお世話かもしれません(^^; 「1年」フィールドが Yes/No 型で設計されているようですが、「学年」フィールドなどの名称で、 数値型 にした方が使い易いのでは? 「それは承知」で理由が有って1年とされているのでしたら失礼しました。

全文を見る
すると、全ての回答が全文表示されます。
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> rs.Open "SELECT * FROM 教科テーブル WHERE 1年='" & True & "';", cn Yes/No 型は、数値型と同じ扱いなのでシングルクォーテーションが不要ですね。 rs.Open "SELECT * FROM 教科テーブル WHERE 1年=" & True & ";", cn

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ADO WHERE句でエラーになる

    アクセス2003です。 ADOを使ってテーブル1の済「 (Yes/No型) 」に rs.Open "テーブル1 WHERE 済=True", cn, adOpenStatic, adLockPessimistic と言う風にフィルタをかけたいのですが 「キーワードWHERE''付近意不適切な構文があります。」 というエラーがでてしまいます。 どこか文法がおかしいでしょうか?よろしくお願いします。

  • WHERE レコードが抽出されない

    ADOでSQL文を作ってるのですが WHERE句がうまくできません。 rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "URL like '#*'" なら、うまくいくのですが、 Filterを使うのをやめて、WHEREに書きかえると、エラーにはならないのですが 取得レコードが0件になります。 rs.Open "T_テーブル WHERE [URL] like '#*';", cn, adOpenKeyset, adLockOptimistic も rs.Open "T_テーブル WHERE URL like '#*';", cn, adOpenKeyset, adLockOptimistic も、0件が返ります。 何がおかしいのでしょうか? URLフィールドで、#で始まるレコードを抽出したいです。

  • Oracleからexcelへの抽出条件

    office2010 oracle11g Oracleデータベースから、excelマクロで条件を満たすデータを抽出したいです。 macroシートのI1に =TEXT(NOW(),"yyyymmddhhmm") が設定されています。 oracleのUSERというテーブルで、V_HELP_END_DTの列に日付としてのデータが入っています。 20170327 20160609 の様に西暦月日、8桁のデータです。 今日の日付 < V_HELP_END_DT のデータを抽出する条件で下記の様に設定しました。 Dim t As String t = Sheets("macro").Range("I1").Value rs.Open "select * from USER where V_HELP_END_DT >" & t, cn, adOpenDynamic, adLockOptimistic, adCmdText 上記のマクロで、エラーは発生しないのですが、何も抽出されません。 何が悪いのか、訂正いただきたく、よろしくお願いします。 なお、下記の場合は、2017から始まるデータが抽出されます。 rs.Open "select * from USER where V_HELP_END_DT > '2017%' ", cn, adOpenDynamic, adLockOptimistic, adCmdText

  • 除外抽出条件

    こんにちは、SQLの抽出条件でわからないところが在るのでよろしくお願いします。 テキスト型でメールアドレスの入ったフィールドに対して抽出をしたいのですが、"@" の含まれていないフィールドの抽出の仕方がわかりません。含まれる場合は select * from テーブル where メールアドレス like '%@%' で出来ます。含まれない場合、 select * from テーブル where メールアドレス <> の後にどう記述すれば言いのでしょうか?

  • <SQL>条件付きで最小値レコードを抽出する方法

    SQLite3.7.5を使っています。 以下<抽出前>の様なテーブルから、col2の値が"FALSE"で(col1=3,4,5の3つ)かつ、col3が最小値(col3=3)であるレコードを<抽出後>のように抽出するSQL文をご教示ください。 <抽出前> col1 | col2 | col3 1 | true | 3 2 | true | 0 3 |false | 3 4 |false | 5 5 |false | 3 <抽出後> col1 | col2 | col3 3 |false | 3 5 |false | 3 自分で考えたSQL文は以下です。 抽出結果は問題ないのですが、同じSELECT文を2回書いていてだいぶ効率悪いことをしているのではないかと思い質問しました。 よろしくお願い致します。 SELECT * FROM (SELECT * FROM test WHERE (col2 = false)) WHERE col3 = (SELECT min(col3) FROM (SELECT * FROM test WHERE (col2 = false)))

  • whereで変数込みの抽出条件

    office2010,oracle 11g oracleからexcelへの抽出条件で、(1)と(2)は、それぞれで動作します。 (1)と(2)をor条件で接続したいのですが、どの様な書式になるか教えていただきたく。 Dim t As String t = Mid(Sheets("macro").Range("I1").Value, 1, 8)  I1セルには式=TEXT(NOW(),"yyyymmdd")が入っています。 (1) rs.Open "select * from USER where (A ='B' and C ='D' and E <>'F' and E <>'G' and not E like '使用不可%') or ( A ='B' and C ='H') ", cn, adOpenDynamic, adLockOptimistic, adCmdText (2) rs.Open "select * from USER where K ='L' and M >" & t, cn,adOpenDynamic,adLockOptimistic, adCmdText where (…) or (…) or (…) , cn,adOpenDynamic,adLockOptimistic, adCmdText という構成でエラーになるのです。 ※なお、条件分は、本来のものと変えています。

  • 抽出条件のあるクエリにADOで新規にレコードを追加

    抽出条件のあるクエリにADOで新規にレコードを追加する事は不可能でしょうか? フォーム1にテキスト0を配置し SELECT テーブル1.色 FROM テーブル1 WHERE (((テーブル1.色)=[Forms]![フォーム1]![テキスト0])); というクエリを作成しました。 テーブル1のデータは 色 黄 黒 青 赤 です。 ADOでクエリにデータを追加したいのですが Public Sub Exsample() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Set CN = CurrentProject.Connection Set RS = New ADODB.Recordset SQL = "SELECT * FROM クエリ1" ここの時点で 「実行時エラー:'-2147217904 (80040e10)': 1つ以上の必要なパラメータの値が設定されていません。」 と表示されてしまいます。 「クエリ1」を「テーブル1」にしたらうまくいきます。 だったらテーブルに追加したら?と思われると思いますが 今回は例であり、実際はクエリに追加したいです。 回避方法があれば教えてください。 よろしくお願い致します。 (ヴァージョンはアクセス2003です)

  • RE: [Excel ADO]未登録データの抽出法

    以前質問した内容↓で、一旦解決したかに思えたのですが http://okwave.jp/qa/q9185441.html Set CN = New ADODB.Connection CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties='Excel 8.0;HDR=YES'" CN.CursorLocation = adUseClient Sql = "SELECT * FROM T_訪問者 WHERE NOT EXISTS " & _ "( SELECT * FROM T_名簿 WHERE T_名簿.登録者名 = T_訪問者.訪問者名 )" Set RS = CN.Execute(Sql) Debug.Print RS.RecordCount 以上のようなコード(疑似です)で、 未登録データがないにもかかわらず、RS.RecordCountが1を返す場合があります Sql = "SELECT COUNT(*) FROM T_訪問者 WHERE NOT EXISTS " & _ "( SELECT * FROM T_名簿 WHERE T_名簿.登録者名 = T_訪問者.訪問者名 )" として、件数を出した場合も同様です。 RS.fields(0)などはNULLのままで何も入っていません 未登録データがある場合の抽出は全く問題ないのですが、 抽出数が0(登録済みデータだけ)なら通常処理、といきたいのに うまくいかず困っています。 何が悪いのでしょうか。

  • Access2000で条件付き検索の方法?

    アクセス2000でWHERE句に 年月日 等の条件付きSELECT文を実行したいのですが 構文等の構成が分かりません。  以前は、EXCELで何とかプログラムが組めたのですが、アクセスは今回初めての試みで、 だいぶ勝手が違い戸惑っています。 「逆引きExcel VBA」、「逆引きVB6」その他「アクセスVBA」本等 文章を探してみましたが、 それぞれ、DAO、ADO、Commandを使うやり方を紹介してるのでが、うまくいきません。 「AccessVBA+SQL実践活用」という本では、次のように書いてあります。 Connectionオブジェクトをつかったプロシージャー cn ,rs, mySQL の変数宣言 Set cn=CurrentProject.Connection Set rs=New ADODB.Recordset mySQL="SELECT ***********  rs.Source=mySQL rs.ActiveConnection=cn rs.Open これでデータが取れて、変数に入れています。あと cn , rs をとじて終了  このほか、Commandオブジェクトを使う方法も紹介していますが、同じようなものです。 この方法だと、rs.Openのところで「引数不足」というコメントが出て、デバッグ中断します。 rs.Open("テーブル名")と書いても「引数不足」とコメントされます。 検索自体は、SQL文のところでWHERE 句 に =年月日 又は、特定の=番号と等しいFIELDの検索 なんですが、その前後の手順がわかりません。 VB6の時のようにConnectionString="MsProvider********** と書く方法の方がただしいのか、 わかりません。この構文も今ひとつ手順が、はっきりわからないので困っています。 ソフトは、Win7(64ビット) Access2000 です。 尚、DAOをつかった、ファイルを読み込みDBテーブルに書き込みするのは出来ています。 わかる人がいたら、是非是非おしえてください。 この文だけで、だいぶ時間をかけてしまいました。  よろしくお願いします。

  • ACCESS条件別抽出

    Access2000を使用しております。 クエリより抽出条件を元に値をとってくるということがしたいです。 抽出条件として日付を指定します。 以下はwhere以降で、BETWEENを使用しましたが「日付の構文エラー」とでて、抽出できませんでした。 他の方法はございますか? (2006年10月のものだけ) where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610# よろしくお願いします。

このQ&Aのポイント
  • 2台のプリンターはインクを替えようとした際、使えなくなってしまいました。
  • Windows8でUSB接続されており、関連するソフトやアプリは特にありません。
  • ブラザー製品のDCP-J972Nに関する質問です。
回答を見る