Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
SQL VBA运行时错误3075:查询表达式中出现语法错误(缺少运算符)_Sql_Ms Access_Vba - Fatal编程技术网

SQL VBA运行时错误3075:查询表达式中出现语法错误(缺少运算符)

SQL VBA运行时错误3075:查询表达式中出现语法错误(缺少运算符),sql,ms-access,vba,Sql,Ms Access,Vba,我正试图遵循一组循环SQL代码,以满足Access数据库中的特定需求。我遇到了这个错误 运行时错误3075:语法错误查询中缺少运算符 表达式'SYRLIB_FLCRDD14.CRARNO=SYRLIB_FPCRDHDR.CHARNO From SYRLIB_FLCRDD14内部连接SYRLIB_FPCUSMAS on SYRLIB_FLCRDD14.CRCUST=SYRLIB_FPCUSMAS.CNUMBR来自SYRLIB_FLCRDD14 内部连接SYRLIB_FPSECFIL on SYRL

我正试图遵循一组循环SQL代码,以满足Access数据库中的特定需求。我遇到了这个错误

运行时错误3075:语法错误查询中缺少运算符 表达式'SYRLIB_FLCRDD14.CRARNO=SYRLIB_FPCRDHDR.CHARNO From SYRLIB_FLCRDD14内部连接SYRLIB_FPCUSMAS on SYRLIB_FLCRDD14.CRCUST=SYRLIB_FPCUSMAS.CNUMBR来自SYRLIB_FLCRDD14 内部连接SYRLIB_FPSECFIL on SYRLIB_FLCRDD14.CRCLRK=SYRLIB_FPSECFIL.SECNUM来自SYRLIB FLCRDD1’

对于粗体部分,我认为应该是SYRLIB_FLCRDD14,我已经搜索了整个代码,所有23个匹配项都拼写为FLCRDD14,我没有看到FLCRDD1。我错过什么了吗

感谢您迄今为止的所有评论!我已经根据下面的建议重新编辑并粘贴了整个代码集。我还去掉了SELECT周围的括号,并去掉了[Issue by]后面的逗号。我使用了即时窗口并运行了新的查询。它给出了一个不同的错误:查询表达式“SYRLIB_FLCRDD14.CRCMMT”中的语法错误缺少运算符

Sub RunDistrackData()  'Pulls Customer Rebate Data
'On Error GoTo Err_Handler:

    'DoCmd.SetWarnings False
    'DoCmd.Hourglass True

    Dim rst2 As ADODB.Recordset
    Set rst2 = New ADODB.Recordset
    rst2.Open "[TblDC]", CurrentProject.Connection

    Dim sCHAR As String
    Dim sName As String
    Dim sNUM As String
    Dim SQry As String
    Dim mySQL As String
    Dim qfd As QueryDef
    Dim db As Database
    Set db = CurrentDb
    Dim bTime As Date
    Dim eTime As Date
    'bTime = Now()

    rst2.MoveFirst

    DoCmd.OpenQuery "Clear Data", acViewNormal, acEdit
    Do While Not rst2.EOF

    sCHAR = rst2.Fields("DC CHAR")
    sNUM = rst2.Fields("DCNum")
    sName = rst2.Fields("DCName")


mySQL = "INSERT INTO [Data]([DC],[DC Name],[Customer Type],[Printed Date],[Entered Date],"
mySQL = mySQL & " [Customer Number],[Customer Name],[Transfer Invoice],[Item Number],"
mySQL = mySQL & " [Item Description],[CRTYPE],[Reason for Return],[Dist Return Code Override],"
mySQL = mySQL & " [Qty Returned],[CRRPCS],[CRCRTT],[CRDBCR],[CRINV#],[CRCMMT],"
mySQL = mySQL & " [GEN CMMT1],[GEN CMMT2],[GEN CMMT3],[Issue by])"

mySQL = mySQL & " SELECT " & sNUM & " AS [DC],  '" & sName & "'  AS [DC Name], "

mySQL = mySQL & " " & sCHAR & "LIB_FPCUSMAS.CSBSTY AS [Customer Type], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRCMDT AS [Printed Date], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRPRDT AS [Entered Date], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRCUST AS [Customer Number], "
mySQL = mySQL & " " & sCHAR & "LIB_FPCUSMAS.CLNAME AS [Customer Name], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRARNO AS [Transfer Invoice], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRITEM AS [Item Number], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRDESC AS [Item Description], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRTYPE, "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRRESN AS [Reason for Return], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRDSOV AS [Dist Return Code Override], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRQTSR AS [Qty Returned], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRRPCS, "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRCRTT, "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRDBCR, "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.[CRINV#], "
mySQL = mySQL & " " & sCHAR & "LIB_FLCRDD14.CRCMMT, "
mySQL = mySQL & " " & sCHAR & "LIB_FPCRDHDR.CHCMT1 AS [GEN CMMT 1], "
mySQL = mySQL & " " & sCHAR & "LIB_FPCRDHDR.CHCMT2 AS [GEN CMMT 2], "
mySQL = mySQL & " " & sCHAR & "LIB_FPCRDHDR.CHCMT3 AS [GEN CMMT 3], "
mySQL = mySQL & " " & sCHAR & "LIB_FPSECFIL.SECNAM AS [Issue by] "






'change below to connect FLCRDD14 table to whichever order table adding.  add order details above

mySQL = mySQL & " From " & sCHAR & "LIB_FLCRDD14 INNER JOIN " & sCHAR & "LIB_FPCRDHDR"
mySQL = mySQL & " ON " & sCHAR & "LIB_FLCRDD14.CRARNO = " & sCHAR & "LIB_FPCRDHDR.CHARNO"
mySQL = mySQL & " From " & sCHAR & "LIB_FLCRDD14 INNER JOIN " & sCHAR & "LIB_FPCUSMAS"
mySQL = mySQL & " ON " & sCHAR & "LIB_ FLCRDD14.CRCUST = " & sCHAR & "LIB_FPCUSMAS.CNUMBR"
mySQL = mySQL & " From " & sCHAR & "LIB_FLCRDD14 INNER JOIN " & sCHAR & "LIB_FPSECFIL "
mySQL = mySQL & " ON " & sCHAR & "LIB_FLCRDD14.CRCLRK = " & sCHAR & "LIB_FPSECFIL.SECNUM"


mySQL = mySQL & " FROM " & sCHAR & "LIB_FLCRDD14"
mySQL = mySQL & " WHERE (((" & sCHAR & "LIB_FPGLJNLDBK.CRITEM)"
mySQL = mySQL & " Like '*358300*') "

mySQL = mySQL & " AND ((" & sCHAR & "LIB_FPGLJNLDBK.CRCMDT)"
mySQL = mySQL & " Between [Forms]![Form1]![StartDate] "
mySQL = mySQL & " And [Forms]![Form1]![EndDate]));"

mySQL = mySQL & " AND ((" & sCHAR & "LIB_FPGLJNLDBK.CRRESN)"
mySQL = mySQL & " Like ('*MS*'Or '*RB*'Or '*GR*'))"

mySQL = mySQL & " AND ((" & sCHAR & "LIB_FPGLJNLDBK.CRITEM)>0))"


Debug.Print mySQL

    SQry = "Income" & sCHAR
    Set qfd = db.CreateQueryDef(SQry, mySQL)
    qfd.ODBCTimeout = 9999
    RefreshDatabaseWindow
    DoCmd.OpenQuery "Data" & sCHAR
    db.QueryDefs.Delete (SQry)

    rst2.MoveNext
    Loop

    'add additional queries here
    'DoCmd.OpenQuery "..............."

    DoCmd.OpenQuery "Add MIF Data"


    'DoCmd.SetWarnings True
    'DoCmd.Hourglass False

    rst2.Close
    Set rst2 = Nothing

    'eTime = Now()

    'MsgBox "Report run is completed.  Run Time = " & Format([eTime] - [bTime], "hh:nn:ss")

    End Sub

在这个答案的末尾,我粘贴了从代码的主循环创建的第一条INSERT语句的全文

由于我的数据库副本无法连接到ODBC数据源,因此无法测试该语句

然而,我可以看到几个问题:

“选择字段”列表中的SYRLIB_FLCRD在下一个字段前缺少逗号。 我不确定什么是SYRLIB_FLCRD。它看起来像是表名的一个片段,后面没有实际的字段名。 从子句中选择多个。 零散的分号;在WHERE子句的中间 像“*MS*”或“*RB*”或“*GR*”在Access SQL中无效 这些可能不是所有的错误。但它们足以让我相信你现在应该忘记VBA代码。只关注查询。用精选件进行设计和测试。工作完成后,将其调整为插入

只有在插入执行时没有错误,并且执行了所需的操作后,才能返回VBA代码

插入[数据] [DC], [DC名称], [客户类型], [打印日期], [输入日期], [客户编号], [客户名称], [转账发票], [项目编号], [项目说明], [CRTYPE], [返回原因], [Dist返回代码覆盖], [退回数量], [CRRPCS], [CRTT], [CRDBCR], [CRINV], [CRCMMT], [GEN CMMT1], [GEN CMMT2], [GEN CMMT3], [发布人] 选择 3作为[DC], “锡拉丘兹”作为[DC名称], SYRLIB_FPCUSMAS.CSBSTY作为[客户类型], SYRLIB_FLCRDD14.CRCMDT作为[打印日期], SYRLIB_FLCRDD14.CRPRDT作为[输入日期], SYRLIB_FLCRDD14.CRCUST作为[客户编号], SYRLIB_FPCUSMAS.CLNAME作为[客户名称], SYRLIB_FLCRDD14.CRARNO作为[转账发票], SYRLIB_FLCRDD14.CRITEM作为[项目编号], SYRLIB_FLCRDD14.CRDESC作为[项目说明], SYRLIB_FLCRDD14.CRTYPE, SYRLIB_FLCRDD14.CRRESN作为[返回原因], SYRLIB_FLCRDD14.CRDSOV作为[Dist返回码覆盖], SYRLIB_FLCRDD14.CRQTSR作为[返回数量], SYRLIB_FLCRDD14.CRRPCS, SYRLIB_FLCRDD14.crtt, SYRLIB_FLCRDD14.CRDBCR, SYRLIB_FLCRDD14[CRINV], 锡里布 D14.CRCMMT, SYRLIB_FPCRDHDR.CHCMT1作为[GEN CMMT 1], SYRLIB_FPCRDHDR.CHCMT2作为[GEN CMMT 2], SYRLIB_FPCRDHDR.CHCMT3作为[GEN CMMT 3], SYRLIB_FPSECFIL.SECNAM AS[发布人] 从SYRLIB_FLCRDD14内部在SYRLIB_FLCRDD14.CRARNO=SYRLIB_FPCRDHDR.CHARNO上连接SYRLIB_FPCRDHDR 从SYRLIB_FLCRDD14内部连接SYRLIB_FPCUSMAS ON SYRLIB_FLCRDD14.CRCUST=SYRLIB_FPCUSMAS.CNUMBR 从SYRLIB_FLCRDD14内部连接SYRLIB_FPSECFIL ON SYRLIB_FLCRDD14.CRCLRK=SYRLIB_FPSECFIL.SECNUM 来自SYRLIB_FLCRDD14 哪里 类似“*358300*”的SYRLIB_FPGLJNLDBK.CRITEM 和SYRLIB_FPGLJNLDBK.CRCMDT 在[形式]之间![表格1]![开始日期]和[表格]![表格1]![截止日期];和SYRLIB_FPGLJNLDBK.CRRESN 比如“*MS*”或“*RB*”或“*GR*”和SYRLIB_FPGLJNLDBK.CRITEM>0
请提供mySQL变量的最终值。顺便说一句,我们无法从不完整的代码片段中确定这一点。请删除最后一行[Issue by]中的逗号,不要用括号括起SQL关键字。。。这是错误的:[选择]根据@PittsburghDBA的请求,请向我们显示Access为调试显示的内容。打印mySQLSELECT在括号中是一个问题。尽管如此,检查mySQL的最终值还是很好的。非常感谢HansUp!我将接受你的建议并继续进行。