数据统计出现“ ODBC 参数不足,期待是1”的错误(200分)

  • 主题发起人 主题发起人 hbgchy
  • 开始时间 开始时间
H

hbgchy

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
小弟有一难题:在一MIS系统(Access库,DELPHI开发,无源代码)中作统计报表,原来
做的挺好,后来小弟将数据导出到PARADOX中,尔后又导入到Access中,却发现一部份(大
约有一半左右,均是如下提示)统计报表不能用了,提示:“General SQL error:
[Microsoft][ODBC Microsoft Access 驱动程序] 参数不足,期待是1”,用SQL Monitor
跟踪(Trace Options全部选中),最后几句是这样的:
1715 08:12:10 SQL Execute: Microsoft Access Driver (*.mdb) - Update
suAAStatic LEFT JOIN UsrA88 ON suAAStatic.A0100=UsrA88.A0100 Set
suAAStatic.C8801=UsrA88.C8801 WHERE UsrA88.I9999=(SELECT MAX(I9999) FROM UsrA88
WHERE UsrA88.A0100=suAAStatic.A0100)
1716 08:12:10 SQL Vendor: ODBC - SQLAllocStmt
1717 08:12:10 SQL Vendor: ODBC - SQLExecDirect
1718 08:13:32 SQL Vendor: ODBC - SQLNumResultCols
1719 08:13:32 SQL Vendor: ODBC - SQLRowCount
1720 08:13:32 SQL Data In:MicrosoftAccessDriver(*.mdb)-Rows affected=17096
1721 08:13:32 SQL Stmt: Microsoft Access Driver (*.mdb) - Close
1722 08:13:32 SQL Vendor: ODBC - SQLFreeStmt
1724 08:13:32 SQL Execute: Microsoft Access Driver (*.mdb) - INSERT INTO
suBStatic(B0110,I9999 ,B0160,B0145,B0140) SELECT B0110,1 as I9999,B0160,B0145,
B0140 FROM B01 ORDER BY B0110
1725 08:13:32 SQL Vendor: ODBC - SQLAllocStmt
1726 08:13:32 SQL Vendor: ODBC - SQLExecDirect
1727 08:13:32 SQL Vendor: ODBC - SQLError
1728 08:13:32 SQL Error: Microsoft Access Driver (*.mdb) - [Microsoft]
[ODBC Microsoft Access 驱动程序] 参数不足,期待是 1。
1729 08:13:32 SQL Vendor: ODBC - SQLError
1730 08:13:32 SQL Error: Microsoft Access Driver (*.mdb) - Unmapped SQL
Error Code: -3010
1731 08:13:32 SQL Stmt: Microsoft Access Driver (*.mdb) - Reset
1732 08:13:32 SQL Vendor: ODBC - SQLFreeStmt

其中:suAAStatic、suBStatic均是临时表,序号1732是程序执行到不能动时的最后语
句。
小弟初涉江湖,不知规矩,失礼之处,还请各位大虾见谅!现将大洋200双手奉上(举
过头顶),望笑纳!
 
出问题的正是这一句:

INSERT INTO
suBStatic(B0110,I9999 ,B0160,B0145,B0140) SELECT B0110,1 as I9999,B0160,B0145,
B0140 FROM B01 ORDER BY B0110

你并没有说清楚是什么时候有是在哪个地方出现这个错误的(倒回时、应用程序使用时...)
请再说清楚些好吗
 
to 笑傲江湖:
据我猜测, 这个统计报表的程序( 我没有它的源程序) 是根据用户的选择自动生成
SQL语句的 , 因为这句话里面的B0110,B0160,B0145,B0140这些指标都是本人选择的,
语句本身我想不应该有问题。
这句话是在应用程序运行中出现的, 另外一个与此语句相对应的、可以正确生成报表
的一句话是这样的:
1210 23:37:37 SQL Execute: Microsoft Access Driver (*.mdb) - INSERT INTO
suBStatic(B0110,I9999 ,B0160) SELECT B0110,1 as I9999,B0160 FROM B01 ORDER BY
B0110

1211 23:37:37 SQL Data In: Microsoft Access Driver (*.mdb) - Rows affected
= 928
在此语句后面,似乎“Rows affected = 928”是上面语句执行结果的回传, 但这句话在
你认为有问题的那句话后面就没有。
现在我就是不知道应用程序本身有问题呢, 还是我的ODBC或是别的什么设置配的不对,
还请多赐教!


 
执行这条SQL时报错

INSERT INTO
suBStatic(B0110,I9999 ,B0160,B0145,B0140) SELECT B0110,1 as I9999,B0160,B0145,
B0140 FROM B01 ORDER BY B0110

下面这条可以执行

INSERT INTO
suBStatic(B0110,I9999 ,B0160) SELECT B0110,1 as I9999,B0160 FROM B01 ORDER BY
B0110

-----两条语句差别只在于第一条多了两个字段BO145, BO140

你再试一下以下两条SQL

INSERT INTO
suBStatic(B0110,I9999 ,B0160,B0145) SELECT B0110,1 as I9999,B0160,B0145,
B0140 FROM B01 ORDER BY B0110

INSERT INTO
suBStatic(B0110,I9999 ,B0160,B0140) SELECT B0110,1 as I9999,B0160,B0145,
B0140 FROM B01 ORDER BY B0110

看看究竟是哪一个字段不能选.
想想你究竟对这个出问题的字段都干了些什么.
如果是倒库破坏了数据一些修饰, 倒回时就应该报错啊.

ODBC的原生错误信息,我晚上再查一下MSDN
马上要出去办点事.
 
接受答案了.
 
后退
顶部