プロが教えるわが家の防犯対策術!

ACCESS2000でOracle8iとODBC接続しております。
接続先サーバーが複数あり、それぞれテーブルリンクしてVBAで処理を記述しております。サーバーが起動していないと当然以下のエラーで接続が失敗します。
 ■実行時エラー '3151':ODBC 'データベース' への接続に失敗しました。
各接続先サーバーは夕方~22時までの間にランダムで終了します。顧客の状況でそうなってしまいます。起動しているサーバーだけ処理させるために3151のエラー処理を追加したのですが、タイムアウトまでうっとうしく感じます。
そこで、PINGのようなイメージで先にサーバーの起動確認し、起動していたら処理を実行させるといったことを考えましたが、VBAでそのような方法はありますでしょうか。その他、このような場合の良い方法(発想)などありましたらご教授いただけないでしょうか。

A 回答 (1件)

Function GetPingStatus(ByVal Address As String) As Boolean


'GetPingStatus("192.168.0.1 等")か、GetPingStatus("コンピュータ名")
'Trueが返ってくれば疎通OK
Dim obj As Object
  For Each obj In GetObject("winmgmts:\\.\root\cimv2") _
      .ExecQuery( _
      "SELECT * FROM Win32_PingStatus" & _
      " WHERE Address = '" & Address & "'", , &H30)
    GetPingStatus = IIf(Nz(obj.StatusCode, 1) = 0, True, False)
  Next
End Function

ネタ元はこちら
サービスがダウンしたときに通知を受け取る方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …
こちらも参考に
サービスがダウンしたときに通知を受け取る方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …

でも処理中にブチッとやられたら・・・どうしたもんでしょね。
    • good
    • 0
この回答へのお礼

ご回答いただきましてありがとうございます。お礼が遅くなりまして申し訳ありません。処理中に電源切られたら、ほんとにどうしたもんでしょうか。時間帯限定で使用する等、運用で回避することにいたしました。今回ご回答いただいた内容は今後の参考にさせていただきます。

お礼日時:2006/08/25 18:21

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

関連するカテゴリからQ&Aを探す