excel vba编程sql select语句报错“至少一个参数没有被指定值”
想通过一个按钮,实现两张表的比对搜索。“流向表”中F列是“客户编号”J列是“邮件编号”,根据客户编号在第二张表“客户单号区间表”中查询到对应的邮件编号区间,判断“流向表”...
想通过一个按钮,实现两张表的比对搜索。“流向表”中F列是“客户编号” J列是“邮件编号”,根据客户编号在第二张表“客户单号区间表”中查询到对应的邮件编号区间,判断“流向表”中的邮件编号是否在第二张表中对应的客户区间中。若不在区间,则将流向表中该行背景色变红。
以下为实现代码,在执行 cnn.Execute (SQL)报错,“至少一个参数没有被指定值”
请大师指教!!!
Sub sub_sql_cx()
Dim x As Long
Dim i As Long
Dim xbbh As Double
Dim khbh As Double
Dim xbbh1 As Double
Dim xbbh2 As Double
Dim cnn, SQL$
'定义数据库连接和SQL语句
Set cnn = CreateObject("adodb.connection")
'创建数据库连接
Set rs = CreateObject("adodb.recordset")
'创建一个数据集保存数据
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';Data Source=" & ThisWorkbook.Path & "\客户单号区间表.xlsx"
x = Range("A65536").End(xlUp).Row
For i = 7 To x
xbbh = Sheet1.Cells(i, "J").Value
khbh = Sheet1.Cells(i, "F").Value
SQL = "select 单号起始 as xbbh1,单号终止 as xbbh2 from [Sheet1$] where 客户编号=khbh"
cnn.Execute (SQL)
If xbbh <= xbbh1 And xbbh >= xbbh2 Then
Rows(i).Interior.Color = 255
End If
Next
cnn.Close
'关闭数据库连接
Set cnn = Nothing
'将CNN从内存中删除。
End Sub
第一张表:流向表
第二张表:客户单号区间表 展开
以下为实现代码,在执行 cnn.Execute (SQL)报错,“至少一个参数没有被指定值”
请大师指教!!!
Sub sub_sql_cx()
Dim x As Long
Dim i As Long
Dim xbbh As Double
Dim khbh As Double
Dim xbbh1 As Double
Dim xbbh2 As Double
Dim cnn, SQL$
'定义数据库连接和SQL语句
Set cnn = CreateObject("adodb.connection")
'创建数据库连接
Set rs = CreateObject("adodb.recordset")
'创建一个数据集保存数据
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';Data Source=" & ThisWorkbook.Path & "\客户单号区间表.xlsx"
x = Range("A65536").End(xlUp).Row
For i = 7 To x
xbbh = Sheet1.Cells(i, "J").Value
khbh = Sheet1.Cells(i, "F").Value
SQL = "select 单号起始 as xbbh1,单号终止 as xbbh2 from [Sheet1$] where 客户编号=khbh"
cnn.Execute (SQL)
If xbbh <= xbbh1 And xbbh >= xbbh2 Then
Rows(i).Interior.Color = 255
End If
Next
cnn.Close
'关闭数据库连接
Set cnn = Nothing
'将CNN从内存中删除。
End Sub
第一张表:流向表
第二张表:客户单号区间表 展开
3个回答
展开全部
SQL = "select 单号起始 as xbbh1,单号终止 as xbbh2 from [Sheet1$] where 客户编号=" & khbh
参数不能放在双引号里面
能运行了, 但是看你的代码下面逻辑还是不对的
参数不能放在双引号里面
能运行了, 但是看你的代码下面逻辑还是不对的
更多追问追答
追问
改成这样后,报“标准表达式中数据类型不匹配”是不是跟我excel里单元格格式有关?
追答
对的, 要分清数字字段和字符串字段
你的第二个表的E字段时代科学技术法的, 最好在excel就把它改掉
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二张表里有单号起始、单号终止,第二张表是sheet1?
更多追问追答
追问
嗯,都是Sheet1
追答
1、
xbbh = Sheet1.Cells(i, "J").Value
khbh = Sheet1.Cells(i, "F").Value
改为:
xbbh ="'" & Sheet1.Cells(i, "J").Value
khbh ="'" & Sheet1.Cells(i, "F").Value
2、
SQL = "select 单号起始 as xbbh1,单号终止 as xbbh2 from [Sheet1$] where 客户编号=khbh"
改为
SQL = "select 单号起始 as xbbh1,单号终止 as xbbh2 from [Sheet1$] where 客户编号='" & khbh & " '"
试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数缺少值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询