質問: access vbaでサーバー起動しているか確認 access2000でoracle8iとodbc接続しております。 接続先サーバーが複数あり、それぞれテーブルリンクしてvbaで処理を記述しております。サーバーが起動していないと当然以下のエラーで接続が失敗します。 ■実行時エラー '3151':odbc 'データベース' への接続に失敗しました。 各接続先サーバーは夕方~22時までの間にランダムで終了します。顧客の状況でそうなってしまいます。起動しているサーバーだけ処理させるために3151のエラー処理を追加したのですが、タイムアウトまでうっとうしく感じます。 そこで、pingのようなイメージで先にサーバーの起動確認し、起動していたら処理を実行させるといったことを考えましたが、vbaでそのような方法はありますでしょうか。その他、このような場合の良い方法(発想)などありましたらご教授いただけないでしょうか。
回答: 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 でも処理中にブチッとやられたら・・・どうしたもんでしょね。