运行该段程序的时候,系统提示
“实时错误'3075':语法错误(操作符丢失)在查询表达式'变压器I试验表.num'中。”
程序代码如下,请各位高手同仁指点,不胜感激!!Private Sub cmdsel_Click()
Dim str11 As String, str22 As String, i As Integer, str As String
str11 = Left(Trim(str1), 3)
Set dbs = OpenDatabase(App.Path & "\DB\Database.mdb", False, False, ";Pwd=02768772283")
str = "select " & str22 & ".num," & str22 & ".place," & str22 & ".runnum," & str22 & ".data," & str22 & ".name," & str22 & ".temp," & str22 & ".humi from " & str22 & " where " & str22 & ".runnum =" & " '" &str3& "'"& "and " & str22 & "place =" & " '" & str11 & "'" & "order by " & str22 & ".data"
Set rsdata = dbs.OpenRecordset(str)
Call showMSF1(MSFlexGrid2)
framshowdate.Caption = str11 & str2
End Sub

解决方案 »

  1.   

    str22没有给出,应该是一个表的名称。
      

  2.   

    ".runnum =" & " '" &str3& "'"& "and " & str22 & "place =" & " '" & str11 & "'" & "order by " &
    会不会是&号没打空格呢?打起空格,还要把str22,str3变量的值也指定了试试。
    ".runnum =" & " '" & str3 & "'" & "and " & str22 & "place =" & " '" & str11 & "'" & "order by " &
      

  3.   

    指定了str22,str3之后,运行结果仍然是有语法错误,操作符丢失,不知何故???再请指教!!!
      

  4.   

    看看STR的值啊
    然后看看在SQL里面能运行不?
      

  5.   

    这种错误我一般是这样解决的,希望对你有帮助,其实很笨的方法。
    假设在Set rsdata = dbs.OpenRecordset(str)处出错,则在这一行上面加入:
    MsgBox str
    看看显示的是什么,也许能看出点儿什么?
      

  6.   

      AlLNum = AlLNumCob.Text
      Data1.RecordSource = "select * from 绞制增量 where 铝线层数 =" & AlLNum
      Data1.Refresh
    这个ok
     Volt = VoltCob.Text
     Data1.RecordSource = "select * from 表1 where 表1.电压等级 = " &  Volt
     Data1.Refresh
    这个报错 和楼主一样
     Volt = VoltCob.Text
     Data1.RecordSource = "select * from 表1 where 表1.电压等级 = " & "'" & Volt & "'"
     Data1.Refresh
    这个又ok  
    感觉vb有间歇性找麻烦的意思 呵呵
    仅供参考
      

  7.   

    给一个小小的建议:
    debug.print 你的sql语句
    在access中查询中执行,通过说明没有问题,如果有问题在查询中也很好找的