- ベストアンサー
NVL関数について
現在、以下の環境で開発を行っているのですが、 いくら調べても埒があかないので、 こちらで質問させていただくことにしました。 OS:Windows2000Professional 言語:VB6sp6 サーバ:Oracle8i 接続方法:oo4o 8.1.7.3.15(パッチあて済み) テーブルより、ある値(TAB_FLG、とします)をとってきて、 その値が☆ならOK、そうでなければNG、のようなコーディングです。 TAB_FLGにNULLが入っていることを考慮して、 NVL関数を使用したSELECT文を発行したのですが、 どうも、 その先の判定でエラーになってしまうのです。 具体的な記述は以下の通りです。 strSQL = "select nvl(TAB_FLG,'☆') from ~" . . . If OraDynaset.Fields("TAB_FLG") = "☆" then Msgbox "OK" Else Msgbox "NG" End If ※テーブルの項目数が多いことと、 必ずレコードが1件しかヒットしないので、 OraDynasetを直接判定に使用しています。 エラーの内容は、(VBのErrorから拾うと) 「OIP-04099:フィールド'TAB_FLG'は見つかりません。」 です。 NULLを無視して、NVL関数を使用しないSQLを発行すると、 このエラーは出ません。 あと、 NVL関数を記述する際に、 「NVL(TAB_FLG,'☆') as TAB_FLG」 という方法をとると、このエラーは出ません。 まったく原因がわからず困っています。 できれば、 使用するテーブルの項目数が多いので、 後者の「as」記述はしたくないのですが・・・ というか、 「as」記述は任意であったと思うので、 なくてもうまくいくはずなのですが・・・ OracleのPDFのマニュアル等にも、 ネットでいくら検索かけても、 解決策がありません。 (どころか、どこにもNVL関数の「as」記述について一切触れられていない) ご存知の方、いらっしゃいましたら、 ご教授願います。 大変困っています。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- oo4o接続でのNVL関数について
度々、同じような質問をしてしまいますが、 ご存知の方がいらっしゃいましたら、 ご教授願います。 現在、以下の環境で開発を行っています。 OS:Windows2000Professional 言語:VB6sp6 サーバ:Oracle8i 接続方法:oo4o 8.1.7.3.15(パッチあて済み) NVL関数にて、数字属性の項目を、 Null値なら、ZEROに置き換えるようSQLを発行しているのですが、 プログラムで計算に使おうとすると、 Null値が入ったままで落ちてしまいます。 実際プログラムで編集しているSQLを、 SQLPLUSで発行してみると正しく動作しているのですが。。 ”oo4o接続だと、NVL関数が正しく使えない” というような情報ってありますか? 正しく使う方法はありますか?
- ベストアンサー
- Oracle
- 関数の実行について
AccessからSQL Server2005へ作り変えています。 質問させていただきます。 テーブル名「伝票」の中身 製品 在庫数 注文数 A 12 10 B 11 13 C 16 11 このテーブルから在庫数と注文数を比較して、 注文数が在庫数以内の場合は・・・OK 注文数が在庫数以上の場合は・・・NG イメージとしては以下のようにななります。 製品 在庫数 注文数 判定 A 12 10 OK B 11 13 NG C 16 11 OK これをAccessのクエリで表現する場合は、判定にVBAを使っています。 (テーブルに判定という項目はありません) SQL Server2005ではスカラ値関数を作って、それをストアドプロシージャで 呼び出せば可能ですよね・・・? そこで以下の悪戦苦闘しながら以下のスカラ値関数を作りました。 ALTER FUNCTION dbo.HANTEI (@ZAIKO int, @TYUMON int, @HANTEI nvarchar(2)) RETURNS nvarchar(2) AS BEGIN IF @ZAIKO >= @TYUMON SET @HANTEI = 'OK' ELSE SET @HANTEI = 'NG' RETURN @HANTEI END これをストアドプロシージャで実行すると、パラメータで指定したHANTEI がテーブルにないので エラーになります。テーブルに判定に相当する項目を用意すると正しく結果が出ます。 テーブルに判定項目を用意せずに正しい結果を出したいのですがどうすればよいですか? よろしくお願いします。
- ベストアンサー
- SQL Server
- SELECT文でLEFT関数を使うと未定義関数ですと言われる
VBソース上では SELECT LEFT(~~~,4) AS 項目 FROM テーブル と SELECT文で書いてもエラーにならずオープンできるみたいなのですが そのSQL文をACCESS2000上で動かすと 未定義関数LEFTがあると言われます どなたか分かる方至急お願いします!!!
- ベストアンサー
- その他(データベース)
- 「何々でなければ、この値」というような関数
「何々でなければ、この値」というような関数を探しています。 こんな感じです。 func(ZZZ, 'A', 'P') ZZZが'A'でなければ'P'を返す イメージ select ZZZ z, func(ZZZ, 'A', 'P') f from テーブル; z f - - A A NULL P P P B P なお、一つの関数である必要はなく、関数を組み合わせたり、入れ子にしたりするのはかまいません。 もしかすると、次のようにするとできるかもしれません。 NVL2 ( NULLIF('A', ZZZ), 'P', 'A' ) ただ、わかりにくい感じがするので。
- ベストアンサー
- Oracle
- NULLか空文字かの判別(DBの値)
VB.NETで、Access(mdb)のテーブルから DAOでデータ取得し、取得したレコード毎に値のチェック処理をします。 その値がNULLかどうかは、isDBNULL関数を使用すれば判定できますが、 空文字についてはどう判定すればわかりますでしょうか?? String型にキャストして「= ""」で判定しようとしましたが、 空文字の場合だとString型にキャストする際にエラーが発生します。 家で試せる環境にないので、エラーが出るかどうかわからないのですが String.IsNULLOrEmptyで判定できるのでしょうか? これもString型にキャストする必要がありそうなので、エラーが出るようにも思います・・・。 オブジェクト型の値が空文字かどうか判定する方法を教えていただけないでしょうか。
- 締切済み
- Visual Basic
- SQLのIN関数に関して
調べても見つからずすいませんが質問させてください。 SQLのIN関数にてNULLは使用できないのでしょうか? 例:項目 IN (NULL,'') といった具合にしても無理でしょうか? Vb.net 2005 SQLServer 2005 を使用しています。
- ベストアンサー
- Visual Basic
- 関数の引数に未定義の変数を渡すとエラーが出る
自作の関数で、issetとemptyを一緒に判定する関数を作っているのですがエラーが出ます。 ある変数が「未定義」または「null」または「""(空白)」の場合はnullである、という関数を作りたいです。 ------------------------------------------ function is_null_ex($value){ if (!isset($value)) {return true;} // 未定義かnullの場合、trueを返す else if (strlen(strval($value)) === 0) {return true;} // 空白の場合はtrueを返す else {return false;} // $valueに値が入っている場合はfalseを返す } is_null_ex($val); ------------------------------------------ 上記の関数で$valueが未定義の場合にfuncを使うと、次のようなエラーが出ます。 Notice: Undefined variable: val つまり、未定義の変数を引数に渡すとエラーが出ます。 「未定義なら関数に渡さなければ?」と思うかもしれませんが、そもそもこの関数は「未定義」または「null」または「""(空白)」を判定したい関数なのです。 この場合、どうすれば良いのでしょうか? エラーは出ますが上記の関数で「if (!isset($value)) {return true;}」の部分できちんと判定はされています。 PHP5.3系で運用しています。 ぞうぞよろしくお願い致します。
- ベストアンサー
- PHP
- 関数の引数
こんにちわ。 ご存知の方、ご教授してもらえないでしょうか? VB.net2005を使っているのですが 関数の引数に変数をセットして、別関数で 引数に対してデータをセットすることは可能でしょうか? C言語でいうところのポインタを引数に渡し ポインタアドレスに書き込むような処理はVB.netでは 可能なんでしょうか? 下記のような事は試したのですが、うまく出来ませんでした(。。; public sub test1() dim mojiretu as string test2( mojiretu ) msgbox(mojiretu) end sub public sub test2( str as string) str = "文字列" end sub
- ベストアンサー
- Visual Basic
- VB6.0のIsNull関数に相当するもの
VBを10年近く使っていて、最近VB.NETの勉強を始めました。 お聞きしたいのですが、Access等のデータベースからデータを取得し、 そのレコードの項目の内容がNullかどうかを確認したいのですが、 どうすればよいでしょうか? VB6.0までならIsNull関数を使用していたのですが・・・どうにも調べ切れませんでした。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルのTEXT関数について
Cellシート上でTEXT( )関数を使うと ちゃんと使えますが、 VBで標準関数の中で 新しい関数を作って、その中に an=Text(suu,"00#") などと、TEXT関数を記述すると 関数が定義されていません。、とエラーになります このTEXTという関数はエクセルのセル上でしか、使えない のでしょうか?
- ベストアンサー
- オフィス系ソフト
- 文字の縦横比を維持したまま、左揃えはできない
- position relativeやposition absoluteを使えば左揃えは可能だが、個別に対応が必要
- 解決策がわからず、困っている
お礼
回答ありがとうございます。 こちらでも少し検討した結果、 NVL関数をつけたらやはり、 「as」で名前をつけてあげないといけないのですね。 もっと早く気づきたかったです。。 というか、いくら調べても全然出てこなかったので、 本当に困りました。。 これから頑張って、「as」記述することにします・・・ ありがとうございました。