定义如下:
Dim DB As New ADODB.Connection
Dim Rec(2) As New Recordset
Dim SQL(10) As String
...
SQL(1) = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\test.mdb;Persist Security Info=False"
...
SQL(4) = "Select User-Office,User-Carrier,User-Name,Source-TrnspType From T_S,T_U Where T_S.Source-Carrier = T_U.User-Carrier"
...DB.Open SQL(0)
...
Rec(2).Open SQL(4), DB, 1, 3 '运行到这里出错提示为:
"实时错误 '-2147217904 (80040e10)':
 [Microsoft][ODBC Microsft Access Driver] Too few
 parameters. Expected 5.修改SQL(4)="Select User-Office From T_S,T_U Where Source-Carrier = User-Carrier"
依然出错,提示为:
"实时错误 '-2147217904 (80040e10)':
 [Microsoft][ODBC Microsft Access Driver] Too few
 parameters. Expected 4.GOOGLE中查到的资料,说如果要查询的资段不存在,就会出这个错.但是反复对照表结构,没有错.
并且在后面为了简化SQL语句,只选择了一个资段,依然出错.搞不懂这个"Expected 5"和"Expected 4"算什么东西?希望大家帮忙.

解决方案 »

  1.   

    我倒,这不是很明显的吗??
    SQL(4) = "Select User-Office,User-Carrier,User-Name,Source-TrnspType From T_S,T_U Where T_S.Source-Carrier = T_U.User-Carrier"其中的t_s和t_u是2个表,而你select部分怎么没加??试试 select t_u.user-office,t_u.user-carrier,t_u.user-name,t_s.source-trnsptype from t_s,T_u where ……
      

  2.   

    你要选取 user-carrier列,看你的where子句里,好象2个表中都有这个字段,我认为在这个sql语句中,凡是用到字段的,在它前面都加上所属的表比较稳妥吧??不知道是不是这个原因,但我想你这样省略它所属的表,这个习惯不好哦
      

  3.   

    字段名有些问题,用[]括起来就OK了:SQL(4) = "Select [User-Office],[User-Carrier],[User-Name],[Source-TrnspType] From T_S,T_U Where T_S.[Source-Carrier] = T_U.[User-Carrier]"
      

  4.   

    我记得好像是只要该字段只属于一个表的话是可以省略表名的.
    当然,为了稳妥起见,将SQL(4)修改如下:sql(4)= "Select T_U.User-Office From T_S, T_U Where T_S.Source-Carrier = T_U.User-Carrier"还是出错了.
    信息:
    "实时错误 '-2147217904 (80040e10)':
     [Microsoft][ODBC Microsft Access Driver] Too few
     parameters. Expected 4.
      

  5.   

    sql(4)= "Select b.User-Office From T_S a, T_U b Where a.Source-Carrier = b.User-Carrier"
    试试
      

  6.   

    DB.Open SQL(1) '?"实时错误 '-2147217904 (80040e10)':一般来说,原因是 SQL 语句中的字段名在所查询的表中不存在。它们被当作一个参数变量了。
    把你的 SQL 语句直接放到 Access 的查询窗口中运行试试,它会具体指出什么错了。
      

  7.   

    带横杠的字段用方括号括起来试试:[User-Office]
      

  8.   

    Rec(2).Open SQL(4), DB, 1, 3 '既然是只读向前的,用Rec(2).Open SQL(4), DB, 1, 1 试试呢?
      

  9.   

    哈哈,谢谢大家帮忙,似乎是解决了.
    最终的SQL字符串为:SQL(4) = "Select [User-Office], [User-City], [User-VendorType], [User-Scorp], [User-Carrier], [User-Name], [Source-TrnspTpye], [Source-BkgBlType], [Source-Origin], [Source-Destination], [Source-EqpType], [Source-Unit], [Source-Rate], [Source-Amount], [Source-Currency] From T_S, T_U Where T_S.[Source-Carrier] = T_U.[User-Carrier] ORDER BY [User-Carrier] ASC"呵呵,有点长.
    非常感谢大家的帮助.马上结贴