- 締切済み
ACCESS VBAでサーバー起動しているか確認
ACCESS2000でOracle8iとODBC接続しております。 接続先サーバーが複数あり、それぞれテーブルリンクしてVBAで処理を記述しております。サーバーが起動していないと当然以下のエラーで接続が失敗します。 ■実行時エラー '3151':ODBC 'データベース' への接続に失敗しました。 各接続先サーバーは夕方~22時までの間にランダムで終了します。顧客の状況でそうなってしまいます。起動しているサーバーだけ処理させるために3151のエラー処理を追加したのですが、タイムアウトまでうっとうしく感じます。 そこで、PINGのようなイメージで先にサーバーの起動確認し、起動していたら処理を実行させるといったことを考えましたが、VBAでそのような方法はありますでしょうか。その他、このような場合の良い方法(発想)などありましたらご教授いただけないでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nicotinism
- ベストアンサー率70% (1019/1452)
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 でも処理中にブチッとやられたら・・・どうしたもんでしょね。
お礼
ご回答いただきましてありがとうございます。お礼が遅くなりまして申し訳ありません。処理中に電源切られたら、ほんとにどうしたもんでしょうか。時間帯限定で使用する等、運用で回避することにいたしました。今回ご回答いただいた内容は今後の参考にさせていただきます。