1

スクリプト内からレイト バインドADOコードを使用するVBAと、次のようになります。

Dim cn As Object
Dim cm As Object
Dim rs As Object

    'get in touch with the server
    'Create ado objects.
Set cn = CreateObject("ADODB.Connection")
cn.Open strConn
cn.CommandTimeout = 0

Set cm = CreateObject("ADODB.Command")
cm.CommandText = "xxx.dbo.xxxStoredProcName"
Set cm.ActiveConnection = cn

cm.CommandType = 4 'adCmdStoredProc

Set rs = CreateObject("ADODB.Recordset")
Set rs.ActiveConnection = cn

rs行からレコードセット オブジェクトであることがわかりますSet rs = CreateObject("ADODB.Recordset")が、コメント (' ) がなければ、意味adCmdStoredProcを思い出すのに苦労するでしょう。cm.CommandType = 4

このコードを変更して、遅延バインディングに固執しCommandTypeEnum、数値形式ではなく列挙型の記述形式を使用する方法はありますか?

4

1 に答える 1

2

これを標準モジュールの宣言セクションに入れます

Enum adCommandTypeEnum
    adCmdUnspecified = -1
    adCmdText = 1
    adCmdTable = 2
    adCmdStoredProc = 4
    adCmdUnknown = 8
    adCmdFile = 256
    adCmdTableDirect = 512
End Enum

そして、早期にバインドした場合と同じように機能します。事前バインディングに戻す場合は、必ずこれを削除してください。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms675946%28v=vs.85%29.aspx

于 2013-08-07T16:29:08.680 に答える