Interbase错误:SQLDA缺失或版本不正确,或者变量的数量/类型不正确

时间:2009-11-25 18:04:16

标签: sql delphi interbase bde

我在通过BDE连接到Interbase的许多TQuery上收到此错误。确切的信息是:

  

常规SQL错误。动态SQL错误,SQL错误代码= -804,SQLDA缺失或版本不正确,或变量数量/类型不正确。

一旦我尝试在设计时打开/编辑TQuery,或者在运行时完成帖子,就会显示该消息。对于运行时的Post动作,我发现如果我在Post之前准备好表,那么Post就很好了。

我看过Craig Stunz's Weblog about same error。我拥有的参数都是整数。数据库很小,Interbase 2009,我看不到显示错误消息的查询的特定模式(可以选择,删除,更新等)。从Delphi中运行查询就可以了。

表格具有数字数据类型(15,2)。

这些表已从Interbase第5版 - 方言1备份/恢复到Interbase 2009。

实际ODS为13.1(Interbase 9)。

没有UDF。

知道出了什么问题吗?

[UPDATE]

查询示例未显示错误/显示错误:

没有错误:

select MASTER_ID, GL_ACCT_DR, GL_ACCT_CR,
VENDOR_ID, VENDOR_CODE,
ORDER_NO, ORDER_DATE, INVOICE_NO, INVOICE_DATE,
DESCRIP, BUYER, SHIP_VIA, FOB, IS_FREIGHT_PREPAID,
IS_TAXABLE, TERMS_ID, TERMS_CODE,
DISC_DAYS_OR_DATE, DISCOUNT_PCT, NET_DAYS_OR_DATE,
BILL_TO_LOC_ID, SHIP_TO_LOC_ID,
BILL_TO_LOC_CODE, SHIP_TO_LOC_CODE,
DISCOUNT_DATE, DUE_DATE
from P_JRNTRN where
ENTITY_DB_ID = :PRIMARY_DB_ID and
SRC_MODULE = 'PJ'
order by INVOICE_NO

参数是整数。

错误:

select * from P_JRNTRN where
BATCH_ID = :BATCH_ID
order by MASTER_ID

参数是整数。

[更新] ... 我无法解决这个问题所以我转而使用IBDAC代替BDE。我没有错误。 谢谢大家。

2 个答案:

答案 0 :(得分:0)

对我来说,看起来你的方言有问题1.你检查你的连接正在使用它吗?或默认3?

答案 1 :(得分:0)

我遇到了同样的问题。我使用的是DataDirect ODBC InterBase驱动程序。

当我切换到官方Firebird ODBC驱动程序时,我解决了它。