我们遇到了一个很奇怪的问题。我们正在运行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可以在本地玩