2011-10-20 5 views
1

非常に奇妙な問題に直面しています。私たちは次のテーブル構造を持つFirebird 2.5データベースを実行しています。 TADOConnectionの+のTADODataSet + TDataSetProvider + TClientDataSetのは、データベースに接続するために我々はDelphi:Firebird 2.5のClientDataSetのテキストブロブ(ODBCを使用)

のWindows 7上のFirebird 2.5.1 + ODBC 2.0.0.151を使用している

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); 

私たちは、デルファイXEを使用しています。

問題は、新しいレコードをClientDataSetに挿入(または更新)し、フィールドMEMOを更新するときです。 (TMemoField)(これは、FB 1.5およびすべてのバージョンのMS SQLサーバーで動作しています)。

Firebird 2.5データベースでは、「引数のタイプが間違っているか、許容範囲外か、互いに競合しています」というエラーメッセージが表示されます。 Delphi IDEから実行していても、外部で実行するとエラーは発生しません。

フィールドMEMOを更新すると、フィールドDATOの時刻部分が消えてしまうのが大きな問題です。 MEMOフィールドを含まない場合、すべてがOKです。

他の奇妙なことは、TADODataSetを直接使用してフィールドを更新すると、すべて正常に動作するということです。 ClientDataSetで更新された場合にのみ問題になります。

私はこの問題を説明する小さなデモプロジェクトを作成しました。

Test.zip(1090キロバイト): http://www.consultas.no/u/3037f738

すべてのヒントやヒントが高く評価されます!

敬具、 ビョルン・ラーセン

答えて

0

あなたはブロブのためTBlobFieldの代わりTMemoFieldを使用してみましたか?

申し訳ありませんが、現時点ではDelphiをローカルで使用することはできません。

+0

申し訳ありませんが、それは役に立たなかったです。同じ問題。 –

関連する問題