VBA、Excel ODBC驱动程序-使用单元格参数的sql查询时出现类型不匹配错误
当我通过从excels单元格获取参数进行选择时,我遇到了类型不匹配错误。我像使用数据库一样使用excel。 我的代码是:VBA、Excel ODBC驱动程序-使用单元格参数的sql查询时出现类型不匹配错误,sql,vba,excel,ado,Sql,Vba,Excel,Ado,当我通过从excels单元格获取参数进行选择时,我遇到了类型不匹配错误。我像使用数据库一样使用excel。 我的代码是: Sub maxlg() Dim sSQLQry As String Dim ReturnArray Dim Conn As New ADODB.Connection Dim mrs As New ADODB.Recordset Dim DBPath As String, sconnect As String DBPa
Sub maxlg()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
Conn.Open sconnect
sSQLSting = "SELECT SUM(Sicherkoef*LG/KFM/'" & Range("U17") & "') AS MAXLG From [DATABASE$] WHERE Platzierung =('" & Range("S11") & "') AND RPJ = ('" & Range("U12") & "') "
mrs.Open sSQLSting, Conn
'=>Load the Data into an array
'ReturnArray = mrs.GetRows
''OR''
'=>Paste the data into a sheet
ActiveSheet.Range("V12").CopyFromRecordset mrs
'Close Recordset
mrs.Close
Conn.Close
End Sub
问题在于从这里获取参数:
RPJ=(“&Range(“U12”)和“)”
在WHERE
子句中。您可能遭受了太多的复制和粘贴。在数学计算中使用`Range(“U17”)值时,您似乎在用记号包装它
sSQLSting = "SELECT SUM(Sicherkoef*LG/KFM/" & Range("U17").value & ") AS MAXLG From [DATABASE$] WHERE Platzierung ='" & Range("S11").value & "' AND RPJ = '" & Range("U12").value & "';"
我还删除了实际文本中的一些括号,其中包含条件。只有在使用多个文本值时才需要这些条件
... WHERE [fld1] IN ('abc', 'def')
thanx用于快速回复。我对数学计算没有问题,它工作得很好。但是如果我添加一个子句,其中….RPJ=(“&Range(“U12”)&“)”ODBC excel会给我一个错误:类型不匹配错误…@KarolSvatý-在即时窗口中得到什么(
Ctrl+G
)如果直接在字符串结构下添加Debug.print sSQLSting
?另一点可能是范围(“U12”)为空,因此子句必须使用ISNULL(…)
或RPJ-LIKE'&Range(“U12”).value&''来解决这种可能性;“
。