TCliantDatasetのFieldsプロパティから属性を取得する事が可能でしょうか?
Oracleと接続していますが、CHAR(2)・VARCHAR2(40)・NUMBER(4,0)等を識別する方法があれば教えて下さい。
よろしくお願いします。
DataTypeプロパティやDataSizeプロパティではダメですか?
数値型の場合のSizeは取得できないみたいですが。0固定??
Ruさん、ありがとうございます。
DataSizeプロパティでサイズは取得できました。
でも数値のサイズはやはり取得できませんでした。
Dataseから固定長のCSVを出力したかったのですが、
数値の判断(右詰にする為)とサイズの判断が無理なようです。
数値の判断なら
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利用先でフォーマットが合わなくて不可かな?
あとなにかありますかねぇ・・・
Ruさん、ありがとうございました。
固定長のテキストファイルを出力する処理が多くあり、
プログラム一本で汎用的にコントロールしたいと思っていました。
おかげでめどがつきました。
数値の桁数の取得は無理なようなので、
ファイル名をKEYにした属性テーブルを作り対応したいと思います。
ツイート | ![]() |