• ベストアンサー

ACCESS(2000 or 2002)でのSQLについて

現在、VB6で在庫管理のツールを作っています。 そこで在庫や物品の検索を行うのですが数値型の項目に 一度数値を入れた後はnullや""の状態にできないのでしょうか? もしできないのであれば、0の状態の時に検索して表示する場合この0を消去するSQLの関数はないでしょうか? Oracleのdecode関数に当たるようなものがあればいいのですが。 よろしくお願いします。 P.S VBレベルの処理で消してもいいのですが、知識を増やすという意味での質問です。

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

  • ベストアンサー
noname#89342
noname#89342
回答No.3

Oracleのdecode関数に相当する関数は IIFというのが有ります。 select iif(stock_cnt=0,'',stock_cnt) as foo from Stock_tbl; と言った感じです。

utatane
質問者

お礼

VBと同じ関数があるんですね。 早速試してみます。 ありがとうございました。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

再びmaruru01です。 フィールドプロパティの[値要求]を"いいえ"にして、コード中でそのフィールドの値をクリアする時に、   = Null とすればいけると思いますが。 ちなみに、   = "" はだめですけど。 では。

utatane
質問者

お礼

レス遅れました 値要求はもともと「いいえ」になっていましたが、自分がVB上で書いていたSQLにシングルクォーテーションが入っていてエラーになっていました^^;<=Null 早速利用しています。 ありがとうございました

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 状況がよく分かりません。 "数値型の項目"とは何ですか? Accessのテーブルのフィールドのことですか?それとも検索フォーム上の入力欄(テキストボックスなど)のことですか? それからVB6で作っているということですが、それはAccessファイルをADOとかで読み込んで検索とかするんでしょうか? 検索はどういうやり方でやっているのですか? どういう状況で"0"を消去したいのでしょうか? 補足願います。 では。

utatane
質問者

補足

検索、登録、修正、削除の一連の動作はDAOで行っています。 テーブル名Stock_tblにあるフィールドに在庫数stock_cntがあり、これを数値型で扱っています。 検索はSQLを発行し、以下のように行っています。 Public Db As Database ←モジュールに書き込んである Dim sSql As String Dim Qry As QueryDef Dim Rs As Recordset Set Qry = DB.CreateQueryDef("") sSql = "select stock_cnt from Stock_tbl" (ほかにも項目はあるが、省略) Qry.SQL = sSql Set Rs = Qry.OpenRecordset() 検索結果をMSFlexGridで表示します。 で、質問はここで検索するStock_cntの値が"0"だった場合、グリッドに表示する際、""の状態で表示したいということです。 Replace関数で制御はできるので現在はそれで行っていますが、知識のためOracleのSQLでいうdecode関数などの代わりのものがあれば知りたいと思ったのです。 また、Stock_cntに一度何か値を登録し、後でその値をクリアしたい場合、そのフィールドに"0"を入れるのではなくNullもしくは""を入れることはできないでしょうか? なかなかうまく説明できませんが、よろしくお願いします

関連するQ&A