• 締切済み

ACCESS VBAでサーバー起動しているか確認

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

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.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/scriptcenter/resources/qanda/sept04/hey0914.mspx こちらも参考に サービスがダウンしたときに通知を受け取る方法はありますか http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept04/hey0903.mspx でも処理中にブチッとやられたら・・・どうしたもんでしょね。

len_on
質問者

お礼

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

関連するQ&A