|
分類:[VB.NET/VB2005]
SQLサーバー2005 VB.NET
販売管理システムの起動で最初ログイン画面を表示するのですが、20回に1回ぐらい の割合で接続エラーになります。 プログラムは下記の通りです。 原因はたまたまタイミングが悪いからなんでしょうか? LAN環境はVPN接続(ルータ有)と社内LAN(ルータ無し)の2種類ですが VPN接続環境で時々エラーが出るようです。 原因がわかれば教えて下さい。 また、わからない場合は2回程リトライしようと思っているのですが、下記の Openメッソッドでループ処理をしたいのですが、書き方がわかりません。 わかる方教えて下さい。 Openメッソッドの中に記述して下さい。 (ログイン画面でループするのはNG。他にも同じようなPGがたくさんあるため)
DB接続プログラム Public Function Open() As Boolean
Dim blnRet As Boolean = False Try Select Case Mode Case 0, 1 Command = Connection.CreateCommand Command.Connection = Connection DataAdapter = New SqlDataAdapter(Command) DataAdapter.SelectCommand = Command Connection.Open() IsOpen = True Case 1 Case 2 End Select blnRet = True Catch ex As SqlException If ex.ErrorCode = -2146232060 Then Select Case Mode Case 0, 1 Command = Nothing DataAdapter = Nothing Connection = Nothing IsOpen = False Case 1 Case 2 End Select MessageBox.Show("接続に失敗しました1。再度クリックして下さい。", MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 'Throw ex KillMe() End If Catch ex As Exception Select Case Mode Case 0, 1 Command = Nothing DataAdapter = Nothing Connection = Nothing IsOpen = False Case 1 Case 2 End Select MessageBox.Show("接続に失敗しました2。再度クリックして下さい。", MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 'Throw ex KillMe() Finally Open = blnRet End Try
End Function
ログイン画面起動プログラム Public Sub Main()
Try If Not ClsCommonChk.FncRepertStart(Process.GetCurrentProcess) Then End End If
PRG_ID_C = My.Application.Info.AssemblyName
param.Param.PRG_ID_C = PRG_ID_C param.Param.Para1 = "#" param.Param.Para2 = "#" param.Param.Para3 = "#" param.Param.Para4 = "#" param.Param.Para5 = "#"
If ClsParameter.GetConfig(Application.StartupPath) Then clsDB = New ClsDataBase(ClsParameter.ConnectionString) clsDB.Open() clsMsg = New ClsMessage(clsDB, param) clsExclusive = New ClsExclusive(clsDB)
Application.EnableVisualStyles() Application.Run(ログイン) Else MessageBox.Show("AAA.xmlが見つかりません。", MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If Catch ex As Exception MessageBox.Show(ex.Message, MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Finally If clsDB.IsOpen Then clsDB.Close() End If clsDB = Nothing clsMsg = Nothing End Try
End Sub
|