Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA、Excel ODBC驱动程序-使用单元格参数的sql查询时出现类型不匹配错误_Sql_Vba_Excel_Ado - Fatal编程技术网

VBA、Excel ODBC驱动程序-使用单元格参数的sql查询时出现类型不匹配错误

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

当我通过从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



    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&''来解决这种可能性;“