• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBSでADO接続に失敗した場合にフリーズする)

VBSでADO接続に失敗した場合にフリーズする

このQ&Aのポイント
  • VBSでADO接続に失敗した場合にフリーズするのですが、何とかならないでしょうか。
  • VBSでADO接続に失敗した場合にフリーズすることがありますが、解決方法はありますか?
  • ADO接続が失敗した場合にVBSがフリーズしてしまいます。どのように対処すればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

よく、On Error Resume Nextを先頭に置いたスクリプトを見かけますが、 まるで、Option Explicitをスクリプトの先頭に置くような感覚で、 「適当にエラーをリカバるオプション」のような誤解があるのではないでしょうか。 On Error Resume Nextの意味は、言わば、 「エラーがあっても無視して、どうなってもいいから暴走しろ」ですから、 そんな、自暴自棄に走らなくても、と思ってしまいます。 そのような時は、きちんとエラー判定を行い、適切な処理をしましょう。 例1では、Openしかエラー判定を行っていませんが、Executeもエラーが起こりそうなのでエラー判定を行ってください。 ようは、Resume Nextを使うなら、エラーが起こりそうなところで、適切なエラー処理を行わなければいけないと言うことです。 例1 sub 処理1 Option Explicit On Error Resume Next Dim objADO Set objADO = CreateObject("ADODB.Connection") objADO.Open "Driver={SQL Server};server=" & WScript.Arguments(0) & _ "; database=" & WScript.Arguments(1) & _ ";uid=" & WScript.Arguments(2) & _ ";pwd=" & WScript.Arguments(3) & ";" if Err.Number <> 0 then else objADO.Execute(WScript.Arguments(4)) objADO.Close end if Set objADO = Nothing WSCript.Quit Err.Number End Sub 例2 sub 処理1 Option Explicit 'On Error Resume Next On Error GoTo Err処理 Dim objADO Set objADO = CreateObject("ADODB.Connection") objADO.Open "Driver={SQL Server};server=" & WScript.Arguments(0) & _ "; database=" & WScript.Arguments(1) & _ ";uid=" & WScript.Arguments(2) & _ ";pwd=" & WScript.Arguments(3) & ";" objADO.Execute(WScript.Arguments(4)) objADO.Close Set objADO = Nothing Exit Sub Err処理: Set objADO = Nothing WSCript.Quit Err.Number End Sub 注:全角空白があるのでそのまま貼り付けないで。

noname#50937
質問者

お礼

わたしの求めている回答のほか、プログラミングをする上での哲学まで教えて頂き非常に感謝しております。残念ながら、わたしの周囲にはあなたのようなプログラマーはおりません。

関連するQ&A

専門家に質問してみよう