エラーにならない

解決


XYZ  2006-04-04 08:52:00  No: 130882

みなさんこんにちは
以下の内容で、OraDbs.LastServerErr = 0 で返ってきて、
エラーにならず非常に困っています。VBエラーにもなっていなかったです。
どなたかご存知の方教えていただけないでしょうか。

ログインはできており、SQLの部分は、間違いなく抽出できないSELECT文です。

'OO4Oオブジェクト変数の宣言
Public OraSes As OraSession
Public OraDbs As OraDatabase
Public OraDynWrk As OraDynaset

Set OraSes = CreateObject("OracleInProcServer.XOraSession")
Set OraDbs = OraSes.OpenDatabase("AAA", "BBB" & "/" & "CCC", 0&)

SQL = ""
SQL = " SELECT KKK FROM TTT "
SQL = SQL & " WHERE BBB = '" & TEXT1 & "'"
   
Set OraDynWrk = Nothing
Set OraDynWrk = OraDbs.CreateDynaset(SQL, 0&)
If OraDbs.LastServerErr <> 0 Then
   If MsgBox("エラーです。", vbOKOnly + vbCritical) = vbOK Then
      Exit Sub
   End If
End If


魔界の仮面弁士  2006-04-04 12:17:45  No: 130883

> 以下の内容で、OraDbs.LastServerErr = 0 で返ってきて、
> エラーにならず非常に困っています。VBエラーにもなっていなかったです。
であれば、エラーではなく、正常に動作しているという事なのでは。
(そもそも、どのようなエラーを期待されているのでしょうか?)

> 間違いなく抽出できないSELECT文です。
抽出結果が0件になるというだけで、SQLとしては正常だったとか。


ひろ  2006-04-04 19:38:11  No: 130884

oo4oではCreateDynasetで「行が見つからない」のはエラーとはならないので、ダイナセットの EOF プロパティを参照するのが基本です。

エラーになるのは PL/SQLの SELECT INTO で行が見つからない場合などです。

例:
OraDbs.executeSQL "BEGIN SELECT KKK into :AAA FROM TTT WHERE BBB='" & TEXT1 & "'; END"

# ネットワーク障害など、実行時の外的な問題が原因でエラーが起きる場合が
# あるので、エラートラップ自体は必ず必要です。
# また、エラートラップの際に OraSes.LastServerErr と Errオブジェクトを
# チェックしていないのは問題があります。
# (OIP-XXXX系のoo4o内部エラーは Errを見ないと捕捉できません)。


XYZ  2006-04-05 04:51:28  No: 130885

返信ありがとうございます。
データが存在しない場合は、エラーで返ってこないのですね。
試しに、存在しないテーブル名を指定するとErrでエラーで
返ってきました。
おっしゃる通り、エラートラップをかけます。

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


XYZ  2006-04-05 04:52:36  No: 130886

解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加