27

私はExcel VBAスクリプトを持っています:

Set cоnn = CreateObject("ADODB.Connection")
conn.Open "report"
Set rs = conn.Execute("select * from table" ) 

スクリプトは正常に動作しますが、パラメーターを追加したいと思います。たとえば、「where (parentid = myparam )」では、myparamがクエリ文字列の外側に設定されています。どうすればできますか?

もちろん、クエリ文字列を変更することはできますが、あまり賢明ではないと思います。

4

2 に答える 2

50

パラメータを追加できるADODB.Commandオブジェクトを使用する必要があります。基本的には次のようになります

Sub adotest()

    Dim Cn As ADODB.Connection
    Dim Cm As ADODB.Command
    Dim Pm As ADODB.Parameter
    Dim Rs as ADODB.Recordset

    Set Cn = New ADODB.Connection
    Cn.Open "mystring"
    Set Cm = New ADODB.Command
    With Cm
        .ActiveConnection = Cn
        .CommandText = "SELECT * FROM table WHERE parentid=?;"
        .CommandType = adCmdText

        Set Pm = .CreateParameter("parentid", adNumeric, adParamInput)
        Pm.Value = 1

        .Parameters.Append Pm

        Set Rs = .Execute
    End With

End Sub

CommandTextの疑問符は、パラメーターのプレースホルダーです。私は信じていますが、私は肯定的ではありません。パラメータを追加する順序は、疑問符の順序と一致する必要があります(複数ある場合)。パラメータの名前が「parentid」であることに騙されないでください。ADOは識別以外の名前を気にしないと思います。

于 2012-04-27T15:56:02.833 に答える