プロが教える店舗&オフィスのセキュリティ対策術

visualbasic2005とoracleを使ってデータベース管理ソフトを作っています。
ひとつのデータのフィールドはいくつかあるのですが、
DATAUPLOADというフィールド値をSQL文で検索するときのみ、
土曜日のデータを拾おうとするとなぜか検索をかけるごとに
件数が1件ずつ減っていくという現象が起きています。
他のフィールドや土曜日以外のフィールドの検索の時には
そのようなエラーは起こらないのですが、
同じSQL文で検索結果が随時異なってしまう場合には
どのような原因が考えられますでしょうか?

DATAUPLOAD は'2008/03/12 00:00:00'の形式のDate型データです。
あるDATE(日付)のデータを検索するときに使用しているSQL文は、

SELECT * FROM DATABASE WHERE DATEUPLOAD BETWEEN TO_DATE(' & CStr(Format(DATE, "yyyy/MM/dd")) & 00:00:00','yyyy/MM/dd hh24:mi:ss') AND TO_DATE(' CStr(Format(DATE, "yyyy/MM/dd")) & 23:59:59','yyyy/MM/dd hh24:mi:ss')
です。

いろいろとSQL文を変更してみたのですが、
同じエラーが続いています。
何か思い当たることがありましたら
教えていただければと思います。

A 回答 (2件)

>同じSQL文での検索結果が異なる



ということは考えにくいです(もし本当にそうならRDBMSの問題であり解決不可能です)。

SQL文を拝見すると、プログラムでSQL文を生成し、それを使って検索を掛けているようですが、こちらで生成されているSQL文が、そもそも間違っているとは考えられませんか?(生成されるSQL文が、毎回違うものになっている可能性が高い)。
上記のSELECT文の前にブレークポイントを設定したうえ、Debug.Printを挿入して、生成されたSQL文を確認してみてください。

そして、Oracleのデータベースマネージャに直接そのSQLを放り込んでみて、どのような結果になるかを確認しましょう。この方法できっと活路が開けると思いますが・・・。
    • good
    • 0
この回答へのお礼

SQL文自体は毎回変わらず同じことを確認して、
Oracleのデータベースマネージャで同じSQLを入力して
データを調べたところ、
データベースのデータ自体に間違ったデータが上書きされてしまい、
検索に引っかからなくなっていたことがわかりました。
SQL文自体の問題ではなかったんですね。
確認方法をアドバイスしていただき、ありがとうございました。
非常に参考になりました。

お礼日時:2008/03/12 18:04

オラクルって日付時刻型フィールドを検索するとき、


いちいち文字列化しないとダメなんですか?
それと、1日だけの日付を検索しているようですが、
時刻まで入っているレコードが複数有っても、
日付だけで検索できないのですか?
    • good
    • 0
この回答へのお礼

はじめはそのまま日付だけで検索していたのですが
件数が変わってしまうというエラーが出たので
いろいろSQL文を変えて試していたために
わざわざ文字型にしてみたり日付型にしてみたりと
少しぐちゃぐちゃしたSQL文になってしまいました。

エラーが直ったので日付のまま検索をかけてみましたが
今度は大丈夫でした。
TO_DATE関数表記は直そうと思います。

回答ありがとうございました。

お礼日時:2008/03/12 18:07

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