• ベストアンサー

VC++ (ADO) で Access の Yes/No 型の Select 文

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_ADO.html を参考にして VC++ 2005 .NET (ADO 接続)にて Access を操作しています。 Select 文にて Access の Yes/No 型を判定したいのですが、WHERE 句を どのように書けばよいのかわかりません。 WHERE field_name = Yes (または 'Yes', 1 など) で書いてみているのですがうまくいきません。 どのように記述すればよいのかご存知の方がいらっしゃいましたらご教示 願えないでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

Yes/No 型という名前が紛らわしいですが、 SQL文で扱う場合の値は True / False です。 Accessでの書式は、True/Flase、Yes/No、On/Offが 選択でき、表示上 Yes/No にする事も可能です。 しかし、「書式」は見た目だけの問題で、 内容は常に True / False で判定できます。 -1 / 0 でのチェックも、問題ないかもしれませんが、 わざわざ使う必要はないと思います。 ----Yesの判定---- WHERE field_name = True もしくは、単に下記でもOK。 WHERE field_name ----Noの判定---- WHERE field_name = False もしくは、Notを使い下記。 WHERE NOT field_name

irija_bari
質問者

お礼

>Yes/No 型という名前が紛らわしいですが、 >SQL文で扱う場合の値は True / False です。 なるほど!そういうことだったんですね。 丁寧な説明もしてくださり、ありがとうございます。 とてもわかりやすいです。 問題が解決できましたので、これにて締め切らせていただきます。 お二人ともありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.1

ただの工場勤めの工員でプログラマではありませんので参考程度にして下さい。 tab1: ID__Hantei 1___Yes 2___No [イミディエイト] ? DBSelect("SELECT * FROM tab1 WHERE Hantei=-1") 1;True;2;True; ? DBSelect2("SELECT * FROM tab1 WHERE Hantei=-1") 1;True; 上の DBSelct関数は ADO、下のは DAOです。 確かに、ADOでは Yes/No型の列の値を正しく認識しませんでした。 全て[Yes]と認識してしまいました。 [イミディエイト] ? DBSelect("SELECT * FROM tab1 WHERE Hantei=-1") 1;True; ? DBSelect("SELECT * FROM tab1") 1;True;2;False; だが、今は、このように正しく認識しだしました。 [イミディエイト] ? CnnExecute("UPDATE tab1 SET Hantei=0 WHERE ID=2") True もしやと思って、ADOで tab1 を更新してみました。 そうするとこの不具合が解消しました。 これは、実にありえない話です。 その後は、テーブルの列を削除・追加しても認識されています。 全く、狐につままれたような感じです。 こ、これは一体、な、なんでしょうかね????。

irija_bari
質問者

お礼

早速の回答ありがとうございます。 Yes は -1 と記述するんですね。(No は 0 ですよね?) まだざっと確認しただけなのですが、うまく判定できているようです。 回答にあった、 >だが、今は、このように正しく認識しだしました。 となったタイミングがわからないのですが、Access テーブルと Access ファイルの同期のタイミングなどが関係ありそうな気がしますね。 他の方も追加情報をくださるかもしれないので、もう数日してから質問を 締めさせていただきます。 助かりました!ありがとうございます。

関連するQ&A

  • アクセスVBAでADOからYes/No型の操作ができない

    超初心者ですいません レコードセットにADOで接続して Yes/No型のフィールドを操作したいのですが たとえばCHKというYes/No型フィールドがあったとして rs!CHK = 0 とか rs!CHK = false とかやっても全くダメです。 どうにかして操作できないでしょうか?? 教えてください!!

  • select文でGROUP BYの正しい使い方

    下記のselect文は問題ないでしょうか?テーブルには5つのフィールド(id,name,age,gender,office)が存在します。 select * from テーブル名 where age >= '40' GROUP BY gender 実際に試したところ、うまく動いているのですが、GROUP BY句で指定されたフィールド名はSELECT句のフィールド指定をすべて含んでいなくてはならないと書かれているのを見つけました。 上記のselect文は正しいのでしょうか。

    • ベストアンサー
    • PHP
  • アクセス:Yes/No型→チェックいれたら、"○"を表示。

    あるフィールドの書式をYes/No型にしてます。 そして、チェックを入れたらフォームビューでは"○"を表示する。 というようなことはできますか?? アクセス初心者です。。 すみませんが、よろしくお願いいたします。

  • yes/no型のチェックができない(アクセス2003)

    フィールドのデータ型をYes/No型にして作ったものを選択クエリで選んだ後に、チェックするもしくは外すということができません。テーブルから直接データ編集する場合は問題なくチェックできています。 原因になにがあるのでしょうか。不勉強で申し訳ございません。アクセス2003です。 ご教授お願いいたします。

  • ACCESS Yes/No型の集計

    ACCESSでチェックボックスが複数あるテーブルがあります。これら各々の個数を表示させたいと奮闘しております。複数のフィールドがあるので、やり方をご教授いただけますようお願いいたします。構造とやりたいことは下記に記します Yesはチェックボックスにチェックが入っている状態です テーブル ---------------------------------------------- グループ   分類1   分類2   分類3 ----------------------------------------------   A   |  Yes  |  No  |  Yes   A   |  No   |  No   |  Yes   A   |  Yes  |  Yes  |  No   B   |  Yes  |  No  |  Yes   B   |  No   |  No  |  Yes   B   |  Yes  |  No  |  Yes   ・   ・   ・   ZZ 上記のようなテーブルがあります。これを ----------------------------------------------------- グループ   グループ総数   分類1   分類2   分類3 -----------------------------------------------------   A    |   3     |   2   |  1   |  2   B    |   3     |   2   |  0   |  3   ・   ・   ・   ZZ とういうようにグループの総数とチェックボックスにチェックが入った数を算出させたいんです どうかご教授願います

  • Yes/No型にチェックを入れたい

    sqlで質問があります。 strSQL = "Select * From db WHERE id" 今はこのsqlしか使用していないのですが、 <INPUT TYPE='submit' VALUE=' 送る '> この、『送る』というボタンを押したら mdbデータのYes/No型 の『yes』にチェックが入るようにしたいのですが、 どうすればいいのでしょうか? 非常に困っております。。。汗。 よろしくお願いいたします。

  • セレクト文について

    sqlのセレクト文について質問させて下さい。 フィールドのレコードに、a,b,c,d,eと登録されているデータから、"c"のデータだけをセレクト対象にしたい場合、どのようにsqlを書けばよいのでしょうか? 通常のセレクト文だと、WHERE句に、(フィールド名 = '値')などで格納されている値とデータの比較ができるかと思うのですが、上記のような場合はどのように指定するのでしょうか? フィールドを無駄に増やし過ぎないよう、カテゴリごとに配列をjoinでまとめたものをDBへ登録しているのですが、この場合だとイメージしているようなことは無理なんでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • アクセスADOで更新クエリがエラーになる

    アクセスからYES/NO型をを含むテーブルをSQLサーバーへ移行したのですが アクセスから更新クエリを使ってYES/NO型のフィールドを全てFalseにしたいのですがエラーになってしまいます。 cn.Execute "UPDATE テーブル SET 返事 = False" このコードを アクセスからADOを使ってアクセスのテーブルに対して行えば問題なくできるのですが そのままSQLサーバーのテーブルに対して実行すると 「列名'False'が無効です」 となります。 そもそも列名は「False」ではなく「返事」です。 SQLサーバーでのデータ型は「bit」になっています。 何かわかる方御回答よろしくお願いします。

  • ACCESS VBA テーブルデータにYES/NO

    ACCESSの表形式のフォームにYES/NOフィールドを足して 一覧フォームで任意のチェックボックスを選択して 選択されたデータのみを表示するようにしたいです。 しかしチェックボックスはレコードひとつひとつについてるのですが 認識されるチェックボックスは一番上のレコードのチェックボックスのみです。どうすればレコード別に判定できるのがわからないので 詳しい方ご教授お願いします。自分が書いたのは下記コードです。 Dim chkBln As Boolean chkBln = False If チェック50 = True Then chkBln = True MsgBox chkBln End If '検索結果の表示 DoCmd.OpenForm ("データ修正画面") '自身のレコードソースに設定 Forms("データ修正画面").RecordSource = "Select * From T_障害票マスタ WHERE チェック = " & chkBln & ""

  • select文について

    1つのデータの前後のデータを取得する場合、何か簡単に取得するselect文はありますでしょうか? 例) no name adress 1  山田  東京 3  山本  名古屋 6  田中  大阪 7  高橋  福岡 上記のようなテーブルがあった場合で、noが6の前後のデータを取得する場合、以下のように考えてみましたが他に簡単にデータを取得する方法はないでしょうか? なお、noが6の前後の数字(3や7)は変更される場合がある為、select文の際にno=3やno=7と固定する事は出来ません。 ・noが6の前のデータ(noが3)のデータを取得する場合 select adress table where no<6 oder by no limit 1 ・noが6の次のデータ(noが7)のデータを取得する場合 select adress table where no>6 oder by no limit 1 分かりにくい説明で申し訳ありませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう