VBA、ADO.Connection 和查询参数 [英] VBA, ADO.Connection and query parameters

查看:50
本文介绍了VBA、ADO.Connection 和查询参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 Excel VBA 脚本:

I have excel VBA script:

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

脚本工作正常,但我想为其添加参数.例如"where (parentid = myparam)",其中 myparam 设置在查询字符串之外.我该怎么做?

Script work fine, but i want to add parameter to it. For example " where (parentid = myparam)", where myparam setted outside query string. How can i do it?

当然我可以修改查询字符串,但我认为这不是很明智.

Of course i can modify query string, but i think it not very wise.

推荐答案

您需要使用可以添加参数的 ADODB.Command 对象.基本上就是这个样子

You need to use an ADODB.Command object that you can add parameters to. Here's basically what that looks like

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 除了用于标识之外并不关心名称.

The question mark in the CommandText is the placeholder for the parameter. I believe, but I'm not positive, that the order you Append parameters must match the order of the questions marks (when you have more than one). Don't be fooled that the parameter is named "parentid" because I don't think ADO cares about the name other than for identification.

这篇关于VBA、ADO.Connection 和查询参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆