TCliantDatasetのFieldsの属性を取得するには

解決


はん  2008-01-15 08:53:15  No: 29315  IP: 192.*.*.*

TCliantDatasetのFieldsプロパティから属性を取得する事が可能でしょうか?
Oracleと接続していますが、CHAR(2)・VARCHAR2(40)・NUMBER(4,0)等を識別する方法があれば教えて下さい。
よろしくお願いします。

編集 削除
Ru  2008-01-15 15:02:21  No: 29316  IP: 192.*.*.*

DataTypeプロパティやDataSizeプロパティではダメですか?
数値型の場合のSizeは取得できないみたいですが。0固定??

編集 削除
はん  2008-01-16 10:22:40  No: 29317  IP: 192.*.*.*

Ruさん、ありがとうございます。
DataSizeプロパティでサイズは取得できました。
でも数値のサイズはやはり取得できませんでした。
Dataseから固定長のCSVを出力したかったのですが、
数値の判断(右詰にする為)とサイズの判断が無理なようです。

編集 削除
Ru  2008-01-16 11:33:19  No: 29318  IP: 192.*.*.*

数値の判断なら
      case DataSet.Fields[***].DataType of
        ftInteger, ftFloat, ftCurrency,
        ftSmallint, ftWord, ftLargeint:  //※まとめてますが必要に応じて分けてください。
          begin
            //数値時の処理
          end;

        else
          begin
            //文字時の処理
          end;
      end;
とかでは無理ですか?

固定長のCSV出力ですか。ヘルプ見ると数値型は0固定みたいなので難しいですね。

個々のデータベース及びプログラムに特化して良いならフィールド名から判断して
プログラム内部で桁数を記述すればできますが,おそらくこの方法では
はんさんのやりたいことではないので不可なんでしょう。

あとは数値の場合は特定の桁数に固定するとか。
例:FormatFloat('000000.000000000', DataSet.Fields[***].AsInteger)
csvに書き出した後の処理が不明ですがcsv利用先でフォーマットが合わなくて不可かな?

あとなにかありますかねぇ・・・

編集 削除
はん  2008-01-17 08:32:18  No: 29319  IP: 192.*.*.*

Ruさん、ありがとうございました。
固定長のテキストファイルを出力する処理が多くあり、
プログラム一本で汎用的にコントロールしたいと思っていました。
おかげでめどがつきました。
数値の桁数の取得は無理なようなので、
ファイル名をKEYにした属性テーブルを作り対応したいと思います。

編集 削除