2

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

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

只要我尝试TQuery在设计时打开/编辑该消息,或者在运行时完成发布时,就会出现该消息。对于运行时的 Post 操作,我发现如果我在 Post 之前准备表,则 Post 做得很好。

我已经阅读了Craig Stunz 的关于相同错误的博客。我的参数都是整数。数据库很小,Interbase 2009,我没有看到显示错误消息的查询的特定模式(可以选择、删除、更新等)。从 Delphi 中运行查询就可以了。

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

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

实际 ODS 为 13.1(Interbase 9)。

没有 UDF。

知道有什么问题吗?

[更新]

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

无错误:

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。我没有更多的错误。谢谢大家。

4

2 回答 2

0

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

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

于 2013-05-03T07:34:17.007 回答
0

对我来说,您似乎对方言 1 有疑问。您是否检查过您的连接是否使用该方言?还是默认的3?

于 2009-11-25T19:41:53.723 回答