MyBaseの削除レコード

解決


まさ  2014-02-05 17:07:52  No: 45996  IP: 192.*.*.*

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

編集 削除
igy  2014-02-05 18:50:37  No: 45997  IP: 192.*.*.*

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

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

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

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

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

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

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

編集 削除
igy  2014-02-05 22:55:34  No: 45999  IP: 192.*.*.*

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

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

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

そうですね。

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

編集 削除
まさ  2014-02-06 18:49:59  No: 46000  IP: 192.*.*.*

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

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

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

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

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

編集 削除
まさ  2014-02-07 19:11:43  No: 46002  IP: 192.*.*.*

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

編集 削除