MyBaseの削除レコード

解決


まさ  2014-02-06 02:07:52  No: 45996  IP: [192.*.*.*]

メモリーベースのDB(MyBASE)を利用しデータ操作をしたのあと、ファイルに保存した場合に削除レコードは保存されてしまうのでしょうか?
完全に削除するにはどのようにすればよいでしょうか?

編集    削除
igy  2014-02-06 03:50:37  No: 45997  IP: [192.*.*.*]

試したところ、XML形式、バイナリ形式 どちらも保存されず削除されているようですが・・・

編集    削除
まさ  2014-02-06 05:21:24  No: 45998  IP: [192.*.*.*]

igyさんすみません。表現が悪かったようです。
たぶん削除マークが付いていて、実際のファイルの中には存在している。
よってアプリ上は問題なく、削除レコードは表示されません。

ところがファイルをメモ帳などで開くと、レコードがあるように見えました。
このままだとファイルが大きくなってしまうということで、気になりました。

違うキーワードで探していたのでわかりませんでしたが、いろいろググって、やっとわかりました。

MergeChangeLog  で完全に削除されました。

MyBaseの情報も少ないですね。

編集    削除
igy  2014-02-06 07:55:34  No: 45999  IP: [192.*.*.*]

>MergeChangeLog  で完全に削除されました。

今、確認したら、こちらで試したソースでは、
LogChangesプロパティを False にしていました。

>MyBaseの情報も少ないですね。

そうですね。

やりたいことにもよりますが、お使いのDelphiがXE3以降(Pro以上)でしたら、
SQLiteも検討したほうがよいかもしれません。

編集    削除
まさ  2014-02-07 03:49:59  No: 46000  IP: [192.*.*.*]

SQLiteですか。データ型が少なすぎます。
Paradoxからの移行をしようとすると、手直しが増えすぎます。InterBaseも同じですね。ビジネスではデータが100%正確に移行できる保証がないと使えません。
特にCP932の外字も使えないといけません。
私はMySQLを使用し、CP932ベースで移行しました。

それから、MyBaseのテーブルをXML形式で保存すると、呼び出したときに文字化けが発生しました。バイナリー形式しか使い物にならないようです。
「ガソリン」が文字化けしてしまいました。

編集    削除
igy  2014-02-07 07:09:06  No: 46001  IP: [192.*.*.*]

>「ガソリン」が文字化けしてしまいました。

SaveToFileメソッドの2番目の引数に dfXMLUTF8 を指定するのは、ダメですか?

編集    削除
まさ  2014-02-08 04:11:43  No: 46002  IP: [192.*.*.*]

igyさん
ご指摘の通りdfXMLUTF8なら、「ガソリン」は文字化けしませんでした。
いけそうですね。
ありがとうございました。

編集    削除