Set adoconn = New ADODB.Connection
  Set adoRS = New ADODB.Recordset
  ConnectStr = "provider= Microsoft.Jet.OLEDB.4.0;" & _
              "data source =D:\VB_backup\lijing\ljqh.mdb;" & _
              "Persist Security Info=False "  'ConnectID这里有一个借用
  adoconn.Open ConnectStr
我的SQL语句在以下始终不能通过,系统提示是:“select子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。” 但请老师您相信,我既然到此来问问题,我一定是经过了无数次的调试,但仍无法通过。
我用这个语句的目的是:通过记录集对象打开多个表,动态地并显示factory表中的name字段,并且以name名分组显示出价格*数量后总和。请教您该如何通过啊?谢谢     adoRS.Open "select factory.f_name ,sum(inputrp.i_price ” _                     & "*inputrp.i_count) as i_sum from " _                   & "inputrp,factory,product where " _                   & "inputrp.p_id=product.p_id and " _                  & "product.f_id=factory.f_id " _
                  & "group by factory.f_name " _
                  & "order by i_sum desc", adoconn, adOpenDynamic, adLockReadOnly这里不太好排“”及&联接符号,但我在本地排是不会出现问题的。

解决方案 »

  1.   

    你从多表中查询,应该用join 或者union 啊。
      

  2.   

    你先将他改为
    Set adoconn = New ADODB.Connection
      Set adoRS = New ADODB.Recordset
       Set adoconn = New ADODB.Connection
        cnn.ConnectionString = "driver={Microsoft Access Driver (*.mdb)};" & _
         "dbq=" & App.Path & "\ljqh.mdb"
           adoconn .ConnectionTimeout = 30
        adoconn .CursorLocation = adUseClient
        adoconn .Open
      

  3.   

    用聚合函数时select后的字段必须加在group by 子句后面,你先试试
      

  4.   

    你把sql语句复制到access里面调试,这样的话,如果缺了参数他会提示你的,而且用access调试错误提示比较准确!看了一下你的sql语句,group by语句差了一列!select factory.f_name ,sum(inputrp.i_price *inputrp.i_count) as i_sum from inputrp,factory,product where inputrp.p_id=product.p_id and product.f_id=factory.f_id group by factory.f_name,i_sum order by i_sum desc
                              ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
      

  5.   

    order by i_sum desc-----------------这一句错误,害我调试半天,哎。
    order by 不能指定为在select xxx as xxx_xxx建立的列xxx_xxx...
    先用PARAMETERS 声明一下试试。
      

  6.   

    select factory.f_name 中factory.f_name 没有申明就用,必错无疑,哈哈
      

  7.   

    谢谢各位老师赐教了。
    1,请问网络男孩老师,该如何申明?
       另外,您说的,order by 不能指定为在select xxx as xxx_xxx建立的列xxx_xxx...。那么我就指望它实现如此功能,那又该怎么办呢?2,请问hubin老师您说的factory.fname该如何申明?好象在调试过程中,系统提示过什么申明申明的。
    3,zzclywhn老师讲得较简单,我觉得您说的也对,但能不能详细点儿啊?谢谢
    4,咕咚老师你觉得您说得较详细,也较专业,我准备照您说的去试一下,谢谢赐教!
      

  8.   

    131咕咚老师
      能不能告诉我具体点儿啊,将SQL语句放到ACCESS里的哪里检测啊,我刚才打开AC2000找半天没有找到,累一头汗,请指教一下吧,这样下次我就可以这样了,真谢谢您!
      

  9.   

    access里面有一个查询,可以随便选一个表,然后在查看里面有一个sql 什么试图,反正是第二项,然后把你的sql语句复制进去就可以了!
      

  10.   

    你打开ACCESS数据库,先做一个简单的查询,打开其设计视图中的“SQL语句”(下拉箭头中),再使用你的SQL语句逐一调试(先放入一部分,通过后再加另一部分,如此反复,直到结束),就可以发现错误了。估计你得首先检查你数据结构,即数据表及数据字段均要逐一检查是否有设计原理上的问题。如果还是出问题:建议将ACCESS 2000转换成ACCESS 97版来测试。