dポイントプレゼントキャンペーン実施中!

仕事でASPを使用してWeb画面を開発してます。
環境は、Windows2000+IIS5.0+Oracle8i です。

先日、他の処理と同じようにデータベースを検索し、
条件に一致したデータを抽出したところ、
「ASP 0240 スクリプト エンジンの例外が発生しました 」という
エラーが生じてしまいました。
やっている処理内容は、以下の通りです。

1:objCon.Open
2:
3:strSQL = "select xxx,yyy from ABC"
4:
5:objRS.Open strSQL, objCon, 3, 3
6:If objRS.EOF = True Then
7:a = objRS("xxx").value
8:b = objRS("yyy").value
9:end if

上の7行目を実行すると、エラーが発生してしまいます。
もちろん、ここで実行されるSQL文は正しい構文です。

マイクロソフトでこの「スクリプト エンジンの例外が発生しました 」の
エラーの生じた原因と対処方法を調べようとしたのですが、よくわかりませんでした。

このエラーはどのような原因で起こり、どのように対処すればよろしいのでしょうか?

よろしくお願いします。

A 回答 (5件)

こんにちは。



「ASP 0240 スクリプト エンジンの例外が発生しました」というエラーはあまり見ないですね。
ネットで検索しても、使える情報が見つかりませんし。
よほど深刻なエラーか、よほど初歩的なエラーの可能性があります^^;


まず、サーバには最新のパッチが当てられていますよね?
あと、Oracleには何接続なのでしょうか。
ODBCですか?oo4oですか?ADOですか?


> 先日、他の処理と同じようにデータベースを検索し、
> 条件に一致したデータを抽出したところ、

他の処理では、うまく動作しているんですよね?
SQLを実行して、検索結果を取得できているんですよね?

正常に動作する場合と、正常に動作しない場合の違いはなんでしょうか。
例に記されているSQLと違って、難しいSQLを実行している、ということはありますか?

または、同一ソース内でobjRSをCloseしないで再びOpenしている、ということはありますか?

この回答への補足

返事が遅くなってすみません。

オラクルへの接続は、MicrosoftODBCDriverforOracleを使用しています。

>正常に動作する場合と、正常に動作しない場合の違いはなんでしょうか。

参照している列が違うのみで、SQL文は至って普通のselect文を発行しています。

なんかお気づきの点ありましたら、ご指摘下さい。
宜しくお願い致します。

補足日時:2004/09/15 00:03
    • good
    • 0

OLE DBプロバイダーはOracleのものですか?マイクロソフトのものですか?


この2つのフィールドの中身が全てスペースということはありませんか?
どちらがどちらだったか忘れましたが、どちらかのプロバイダはNet上に送信されるデータ量を減らすために、文字項目にはTrimがかけられ、後ろについているスペースが削除される仕様になっているはず。なので項目の中身が全てスペースだとNULLになってしまいます。
NOT NULLに設定されている項目にNULLがセットされて返ってきたみたいな感じでプロバイダー内でエラーになります。
1つラッピングを増やして、DSNを作成しODBC OLE DBプロバイダーを使用してみると解決するかも。

この回答への補足

問題の生じる環境では、マイクロソフトの方を使用しています。

>1つラッピングを増やして、DSNを作成しODBC OLE DBプロバイダーを使用してみると解決するかも。
情報ありがとうございます。
早速やってみたいと思います。

補足日時:2004/09/15 00:05
    • good
    • 0

値がNULLなんてことは?

この回答への補足

アドバイスありがとうございます。

NULLというのはDBから抽出される値の事でしょうか?
たしかにNULLという事もあり得ると思いますが、
試しにNULL以外のデータを入れてもダメでした。

どうぞ、よろしくお願いします。

補足日時:2004/08/09 21:26
    • good
    • 0

エラーは必ず発生するんですか?


7行目と8行目を入れ替えてもxxxで発生しますか?
xxxの型は?

この回答への補足

はい、ここの検索を処理させることに発生します。
抽出する順番も変えてみましたし、テーブルの他の列(フィールド)に
変えてみてもエラーが生じてしまいました。
データ型は7行目がVARCHAR2(10)で、8行目がVARCHAR2(3)です。
よろしくお願い致します。

補足日時:2004/08/08 02:08
    • good
    • 0

>6:If objRS.EOF = True Then


>7: a = objRS("xxx").value

レコードセットに結果がなかったらxxxの値を取得しています。
そりゃ結果ないですよね。

If objRS.EOF = False Then
では?

この回答への補足

すみません。提示したサンプルが間違ってました。

1:objCon.Open
2:
3:strSQL = "select xxx,yyy from ABC"
4:
5:objRS.Open strSQL, objCon, 3, 3
6:If objRS.EOF = false Then
7: a = objRS("xxx").value
8: b = objRS("yyy").value
9:end if

正確には上の通りです。
よろしくお願いします。

補足日時:2004/08/07 20:42
    • good
    • 0

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