ユーザーが TADOQuery コンポーネントを使用してリモート データベースに対してクエリを実行できるようにするアプリケーションがあります。照会結果は、TADOQuery の SaveToFile メソッドを使用して XML ファイルに保存されます。
最近、フィールドの 1 つに改行文字 (16 進数の "0A") が存在する場合、そのフィールドのデータが切り捨てられる (つまり、ファイルに部分的にしか保存されない) 問題に遭遇しました。フィールドにヌル文字があると、同様の問題が発生します。
私がしなければならないことは、SaveToFile メソッドを呼び出す前に問題のフィールドをスキャンし、「問題のある」文字を別のもの (スペースなど) に置き換えることです。ただし、データベース内のデータを更新することは許可されていないため、変更をデータベースにプッシュすることはできません (つまり、TADOQuery を編集モードにすることはできません)。
これを達成する方法はありますか (つまり、データベース内のデータを変更せずにフィールドを編集し、SELECT を実行した後、SaveToFile を呼び出す前に)? 私は回避策を考えていますが、かなり長くて非効率的ですが、サーバー上のデータに触れることなく XML ドキュメントを編集できます (基本的に、問題のフィールドを読み取り、変更を加え、更新されたバージョンのフィールドを一時ファイルに保存するには、SaveToFile を呼び出してから、XML ドキュメント内のフィールドを更新されたバージョンに置き換えます)。これが私の最善の選択肢ですか、それとももっと良い方法がありますか?