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

解決


はん  2008-01-15 17:53:15  No: 29315

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


Ru  2008-01-16 00:02:21  No: 29316

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


はん  2008-01-16 19:22:40  No: 29317

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


Ru  2008-01-16 20:33:19  No: 29318

数値の判断なら
      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 17:32:18  No: 29319

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


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

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






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