開発環境はvb6.0 w2k_pro
ado接続で OPENしている時ユーザー名やパスワードなどが
違う時異常に時間が掛かるので途中でCommandボタンでキャンセル
させることが出来るのでしょうか?
やはり無理なのでしょうか?
可能です。ADODB.Connectionオブジェクトに対して、
以下の物を調べて見てください。
・接続までの待機時間を調整する「ConnectionTimeoutプロパティ」
・非同期での接続を行う「OpenメソッドのOptions引数に指定するadAsyncConnect定数」
・接続を中止させる「Cancelメソッド」
・現在の接続状況を調べる「Stateプロパティ」
・接続処理の開始前に発生する「WillConnectイベント」
・接続処理の完了後に発生する「ConnectCompletイベント」
・警告発生時に通知される「InfoMessageイベント」
>・非同期での接続を行う「OpenメソッドのOptions引数に指定するadAsyncConnect定数」
helpを見て実行してみけど
>・接続を中止させる「Cancelメソッド」
を使って中止するのですが結局時間が変わらないんですが
どうすれば改善できるでしょうか。
case1だけしかまだやっていません
Private Sub Connection(No As Integer)
flg = False
Select Case No
Case 1
cnn.Provider = "SQLOLEDB"
cnn.Properties("Data Source").Value = strServerName
cnn.Properties("Integrated Security") = "SSPI"
If Me.Combo1.ListIndex <> -1 Then
cnn.Properties("Initial Catalog").Value = _
Me.Combo1.List(Me.Combo1.ListIndex)
End If
cnn.Open , , , adAsyncConnect
While (cnn.State = adStateConnecting)
DoEvents
If flg = True Then
Exit Sub
End If
Wend
If Me.Combo1.ListIndex = -1 Then
Set rs = cnn.OpenSchema(adSchemaCatalogs)
Me.Combo1.Clear
Do Until rs.EOF
Me.Combo1.AddItem rs.Fields(0).Value
rs.MoveNext
Loop
End If
Case 2
cnn.Provider = "SQLOLEDB"
cnn.Properties("Data Source").Value = strServerName
cnn.Properties("User ID") = strUserName
cnn.Properties("Password") = strPassWord
If Me.Combo1.ListIndex <> -1 Then
cnn.Properties("Initial Catalog").Value = _
Me.Combo1.List(Me.Combo1.ListIndex)
End If
cnn.Open
If Me.Combo1.ListIndex = -1 Then
Set rs = cnn.OpenSchema(adSchemaCatalogs)
Me.Combo1.Clear
Do Until rs.EOF
Me.Combo1.AddItem rs.Fields(0).Value
rs.MoveNext
Loop
End If
End Select
End Sub
Private Sub CommandEnd_Click()
cnn.Cancel
flg = True
End Sub
>>・接続を中止させる「Cancelメソッド」
> を使って中止するのですが結局時間が変わらないんですが
どの部分で時間がかかっているのかにもよるかと思います。
Canecelメソッドは、DB側の認証処理を中断する目的には使えるのですが、
Data Sourceの探索などにかかる処理を中断させる事はできないらしいので。
# Data Sourceの探索などにかかる時間は、ネットワークアダプタの
# ドライバ(あるいはハードウェア自体の特性など)に左右されます。
data sourceの検索に時間がかかっているようなので
どうしようもないことが解りました。
魔界の仮面弁士さんありがとうございました。
前に書いた”SQLSERVERの所有者を表示するには?”
が解らないのでどうすればいいのか教えてください?
また不可能なのでしょうか?
>http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200304/03040073.txt