Delphi:使用ODBC的Firebird 2.5上的ClientDataSet中的文本blobs



我们遇到了一个很奇怪的问题。我们正在运行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 server中完美地工作)。

现在使用firebird 2.5数据库,当从Delphi IDE运行时,我们得到错误消息"参数类型错误,超出可接受范围,或者彼此冲突",但如果我们在外部运行则没有错误。

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

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

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

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

所有的提示和提示将高度赞赏!

最诚挚的问候,Bjørn拉森

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

对不起,我现在没有Delphi可以在本地玩

最新更新