MyBaseの削除レコード

解決


まさ  2014-02-06 02:07:52  No: 45996

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


igy  2014-02-06 03:50:37  No: 45997

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


まさ  2014-02-06 05:21:24  No: 45998

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

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

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

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

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


igy  2014-02-06 07:55:34  No: 45999

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

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

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

そうですね。

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


まさ  2014-02-07 03:49:59  No: 46000

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

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


igy  2014-02-07 07:09:06  No: 46001

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

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


まさ  2014-02-08 04:11:43  No: 46002

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加