Delphi2010、MySQL5.5.8環境です。
TTableとADOTableを使用し、ParadoxデータをMySQLデータにコピーしています。この場合は問題なく動作しました。
dbExpressのSimpleDataSetを使用するとBLOBがあると、途中で止まったり、コピーされずにコピーされたりします。
かき方は
MySQLTable.Fields[j] := Table1.Fields[j];
何か根本的な間違えがあるのでしょうか
ソースは以下のとおりです。
Table1 : Paradoxテーブル
MySQLTable :MySQLテーブル
Table1.First;
while not Table1.Eof do begin
MySQLTable.Insert;
for j := 0 to Table1.FieldCount - 1 do begin
// MySQLTable.Fields[j + m] := Table1.Fields[j];
MySQLTable.Fields[j + m].Assign(Table1.Fields[j]);
end;
// --- nullキー項目違反の場合は転送をパスする。
try
MySQLTable.Post;
MySQLTable.ApplyUpdates(0);
Except
MySQLTable.Cancel;
end;
Table1.Next;
end;
MySQLTable.Fields[j + m].Assign(Table1.Fields[j]);
と変えても変わりなし
ADOTableなら問題なく処理できるのでMySQLの問題ではないと思われます。
dbExpressに変更した理由はODBC関連のうっとおしさがあったためです。
正常に動作するADOTableを使用したプログラムとdbExpressを使用したプログラムの動作を比較したところ、
別のプログラムで変換後のテーブルを読む場合、dbExpressを使用した場合「ビットマップイメージが不正です」と表示されます。
一見正常に変換されるように見えるのですが、BLOBの扱いがまずいようです。
dbExpressの何かが問題のようです。
ツイート | ![]() |