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

よろしくお願いします。
タイトルのとおりなのですが

SQLで「...from xx(テーブル名)」もしくは「select xx(列名)...」として値を取得しようとしたときにテーブル、列が存在しない場合への対処はどのように処理するのが一般的なのでしょうか?

On Error Resume Next
Set rec = ado.Execute(query)
target = rec.Fields(field).value
if isnull(target) = True then

上記のIf分では値が入っていない場合の処理はできるのですが、テーブル、列が存在しない場合はチェックできませんでした。

A 回答 (2件)

テーブル名や列名を間違えるというのは基本的にバグなので、救済


する必要はないと思います。
どうしてもエラーハンドリングする場合は以下の通り

On Error Resume Next
Set rec = ado.Execute(query)
If Err.Number = 0 Then
  target = rec.Fields(field).Value
  If Err.Number = 0 Then
    If IsNull(target) = True then
      ~
    End If
  End If
  rec.Close
End If
If Err.Number <> 0 Then
  MsgBox Err.Description, vbCritical, "エラー"
End If

エラーの起こりそうな処理の後で、Err.Numberを調べます。
これが0の場合に次のステップへ進むようにしましょう。
http://msdn.microsoft.com/ja-jp/library/cc392399 …
    • good
    • 0
この回答へのお礼

ありがとうございます。

> If Err.Number = 0 Then

このコードで思い通りにできました。
おっしゃる通り、テーブル名・列名が取得できないような事態はまず考えられないのですが、せっかくなのでエラーチェックは残したいと思います。

お礼日時:2008/11/17 18:50

以下の方法で、出来ませんか。



On Error Resume Next
Set rec = ado.Execute(query)
Do Until rec.EOF
  'レーコードが存在する時の処理
  target = rec.Fields(field).Value
  If IsNull(target) = True Then
    '
  End If
  rec.MoveNext
Loop
rec.Close
'レーコードが存在しない時の処理
    • good
    • 0
この回答へのお礼

私には難しかったようです。
せっかく回答してくださったのに活かすことができず申し訳ないです。

お礼日時:2008/11/17 18:56

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