1

我们遇到了一个非常奇怪的问题。我们正在运行具有以下表结构的 firebird 2.5 数据库。

CREATE TABLE TEST (
    ID    INTEGER NOT NULL,
    MEMO  BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    DATO  TIMESTAMP
);

ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (ID);

我们在 Windows 7 上使用 Firebird 2.5.1 + ODBC 2.0.0.151。

我们使用Delphi XE,用TADOConnection + TADODataSet + TDataSetProvider + TClientDataSet 连接数据库。

问题是当我们将新记录插入(或更新)到 ClientDataSet 并更新字段 MEMO 时。(TMemoField)(这在 FB 1.5 和所有版本的 MS SQL 服务器中都可以正常工作)。

现在使用 firebird 2.5 数据库,我们会收到错误消息“参数类型错误、超出可接受范围或相互冲突”。从 Delphi IDE 运行时,但如果我们在外部运行时不会出错。

最大的问题是当我们更新字段 MEMO 时,字段 DATO 的时间部分消失了。如果我们不包括 MEMO 字段,则一切正常。

另一件奇怪的事情是,如果我们直接使用 TADODataSet 来更新字段,一切正常。只有通过 ClientDataSet 更新时才会出现问题。

我做了一个小的演示项目来说明这个问题。

Test.zip (1090 KB): http: //www.consultas.no/u/3037f738

所有提示和提示将不胜感激!

最好的问候, 比约恩·拉森

4

1 回答 1

0

您是否尝试过对 blob 使用 TBlobField 而不是 TMemoField ?

抱歉,我现在没有可以在本地玩的 Delphi。

于 2011-10-20T22:47:38.597 回答