1

ユーザーが TADOQuery コンポーネントを使用してリモート データベースに対してクエリを実行できるようにするアプリケーションがあります。照会結果は、TADOQuery の SaveToFile メソッドを使用して XML ファイルに保存されます。

最近、フィールドの 1 つに改行文字 (16 進数の "0A") が存在する場合、そのフィールドのデータが切り捨てられる (つまり、ファイルに部分的にしか保存されない) 問題に遭遇しました。フィールドにヌル文字があると、同様の問題が発生します。

私がしなければならないことは、SaveToFile メソッドを呼び出す前に問題のフィールドをスキャンし、「問題のある」文字を別のもの (スペースなど) に置き換えることです。ただし、データベース内のデータを更新することは許可されていないため、変更をデータベースにプッシュすることはできません (つまり、TADOQuery を編集モードにすることはできません)。

これを達成する方法はありますか (つまり、データベース内のデータを変更せずにフィールドを編集し、SELECT を実行した後、SaveToFile を呼び出す前に)? 私は回避策を考えていますが、かなり長くて非効率的ですが、サーバー上のデータに触れることなく XML ドキュメントを編集できます (基本的に、問題のフィールドを読み取り、変更を加え、更新されたバージョンのフィールドを一時ファイルに保存するには、SaveToFile を呼び出してから、XML ドキュメント内のフィールドを更新されたバージョンに置き換えます)。これが私の最善の選択肢ですか、それとももっと良い方法がありますか?

4

1 に答える 1

1

メソッドは、データの保存方法をカスタマイズできないメソッドをTCustomADODataSet.SaveToFile内部的に呼び出します。RecordSet.Saveとにかく、メソッドを提供するTClientDatasetSaveToFileに TAdoQuery を接続できます。もう 1 つのオプションは、独自のメソッドを記述してデータを XML ファイルに保存することです。

于 2015-06-03T19:59:24.683 に答える