ユーザーがクエリを作成して実行し、レポートをファイルに保存できるアプリケーションを作成しました。後日ファイルからレポートを読み込んで画面に表示できます。
TADOQuery コンポーネントを使用してクエリを実行し、クエリがデータを返したときに SaveToFile を呼び出します。次に、LoadFromFile を使用してデータを TADOQuery に読み込み、そこからデータを仮想リストビューに読み込むことができます。どちらの場合も、フォーマット パラメータとして「pfXML」を指定しています。
レポートのフィールドの 1 つに、読み取り可能なテキストではなくゴミが表示されるという問題がユーザーから報告されました。調査の結果、その特定のフィールドの xml ドキュメント内のフィールド定義は「dt:type='bin.hex'」と指定されています。このシステムで同じクエリを実行すると、xml ドキュメントのフィールド定義は "dt:type='string'" として指定されます。
私の質問は、なぜ違いがあるのですか?データベースは同一であるのに、ユーザーのシステムではデータが bin.hex として保存され、他のユーザーのシステムでは文字列として保存されるのはなぜですか? さらに重要なこととして、データ型はどのように決定されるのでしょうか? SaveToFile を呼び出すと、TADOQuery コンポーネントはどのようにしてデータ型を認識し、データ型として xml ドキュメントに何を書き込む必要があるのでしょうか?
データが 16 進数形式で PC に送り返されており、TADOQuery コンポーネントがそこからヒントを得ているのか、それとも (何らかの理由で) そのフィールドのデータ型が 16 進数であると認識してデータを変更しているのか合う?
これについてオンラインで何も見つけることができず、何が起こっているのかわかりません。助けていただければ幸いです。