sql - 向 SQL 查询添加参数
问题描述
我想使用宏内部的 SQL 查询从 Excel 表中获取一些数据。
我的代码是:
Sub Button1_Click()
Dim cn As Object, rs As Object, output As String, sql As String
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
.Open
End With
Value1 = Range("B4").Value ' = 30.10.2020
Value2 = Range("C4").Value ' = 2
'I want to insert Value2 = 2 inside my SQL query
sql = "SELECT * FROM [Page 1$] WHERE Job = Value2 AND DateTime = Value1"
Set rs = cn.Execute(sql) 'but it doesn't work, stops here
Do
output = output & rs("Name") & ";" & rs(1) & ";" & rs(2) & vbNewLine
Debug.Print rs(0); ";" & rs(1) & ";" & rs(2)
rs.Movenext
Loop Until rs.EOF
MsgBox output
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub
如果我尝试使用sql = "SELECT * FROM [Page 1$] WHERE Job = 2"
,我没有错误。
我如何在我的 SQL 查询中粘贴Value2
和值?Value1
解决方案
像这样试试
Dim cmd As New ADODB.Command
Dim param1 As New ADODB.Parameter
Dim param2 As New ADODB.Parameter
Set param1 = cmd.CreateParameter("@Value2", Value2, adParamInput)
param1.Value = Range("C4").Value
cmd.Parameters.Append param1
Set param2 = cmd.CreateParameter("@Value1", Value1, adParamInput)
param2.Value = Range("B4").Value
cmd.Parameters.Append param2
With cmd
.ActiveConnection = cn
.CommandText = "SELECT * FROM [Page 1$] WHERE Job = ? AND DateTime = ?"
Set rs = .Execute
End With
推荐阅读
- html - 在css中以较小的屏幕裁剪背景图像
- python - Python从许多文件中添加数字而不使用太多内存
- c++ - 类对象属性可以调用返回属性在 C++ 中应具有的值的方法吗?
- javascript - 在 Javascript 和 Express 中从前到后发送数据
- python - 不存在的行上的 Python 期望缩进
- c# - 在数据网格中编辑和保存数据
- python - Python:如何使用flask api部署对象检测模型
- huawei-mobile-services - HUAWEI Analytics Kit是否支持上报失败的数据自动重发?
- rust - 从 char 迭代器添加路径组件而不首先收集它的惯用方法是什么?
- java - 我已经使用 StringBuilder 类在 java 中编写了回文代码,但它不起作用?