アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_A …
を参考にして VC++ 2005 .NET (ADO 接続)にて Access を操作しています。

Select 文にて Access の Yes/No 型を判定したいのですが、WHERE 句を
どのように書けばよいのかわかりません。
WHERE field_name = Yes (または 'Yes', 1 など)
で書いてみているのですがうまくいきません。

どのように記述すればよいのかご存知の方がいらっしゃいましたらご教示
願えないでしょうか。
よろしくお願いいたします。

A 回答 (2件)

ただの工場勤めの工員でプログラマではありませんので参考程度にして下さい。



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 を更新してみました。
そうするとこの不具合が解消しました。
これは、実にありえない話です。
その後は、テーブルの列を削除・追加しても認識されています。
全く、狐につままれたような感じです。
こ、これは一体、な、なんでしょうかね????。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

Yes は -1 と記述するんですね。(No は 0 ですよね?)
まだざっと確認しただけなのですが、うまく判定できているようです。

回答にあった、
>だが、今は、このように正しく認識しだしました。
となったタイミングがわからないのですが、Access テーブルと Access
ファイルの同期のタイミングなどが関係ありそうな気がしますね。

他の方も追加情報をくださるかもしれないので、もう数日してから質問を
締めさせていただきます。
助かりました!ありがとうございます。

お礼日時:2008/01/25 17:22

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
    • good
    • 1
この回答へのお礼

>Yes/No 型という名前が紛らわしいですが、
>SQL文で扱う場合の値は True / False です。

なるほど!そういうことだったんですね。
丁寧な説明もしてくださり、ありがとうございます。
とてもわかりやすいです。

問題が解決できましたので、これにて締め切らせていただきます。
お二人ともありがとうございました。

お礼日時:2008/01/27 12:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A