TQueryのDisplayFormatの様な指定方法

解決


小トラ  2009-04-20 21:00:30  No: 34134

1000のデータを10.00様に表示をしたいのです。TQueryを利用して行いたいのですが項目が不定の為、TTableのDisplayFormatの様な指定方法がありますか。  XP、D4です。
同じプログラムで表示項目(コントロールデータ)を変えて表示しています。

フォームにTComboBox1つと複数のTDBEditを置き関連を付けて、TQueryで処理しています。
  for III:= 1 to 10 do begin
    ItemNo := Get_ItemNo('DBEdit'+IntToStr(III));  // 画面ItemデータNo 読込み
    TDBEdit(Components[ItemNo]).Clear;
    Ed0.Items.AddObject(IntToStr(III),TDBEdit(Components[ItemNo]));
  end;


  Query1.SQL.Add('select');
  Query1.SQL.Add(' S.A010');
  Query1.SQL.Add(',S.A020');
  for III:= 0 to 9 do
    if KeyNo[III] <> 0 then begin //コントロールが存在(データフィールド名=No)
       Sspa := 'S.A'+(IntToStr(KeyNo[III]));
       Query1.SQL.Add(','+Sspa);
       .
       .
    end;
  Query1.SQL.Add(' from ');
  Query1.SQL.Add('Data S'); //TbS.TableNameはコントロールデータによって変わる

  Query1.Open;
  Query1.First;

うまく説明できないのですが表示データによって1000が10.00や100.0のようにコントロールしたいのですが、どなたか妙案がありませんか。


AY  2009-04-20 23:08:11  No: 34135

1000が10.00や100.0が良くわかりませんが
動的に発行したSQLで取得した項目に、TTableのDisplayFormatの様に
することは出来ます。

例ですが  openした後で
{FieldByName で指定した項目を TFloatField で型キャスト}
TFloatField(Query1.FieldByName('KINGAKU')).DisplayFormat := '#,##0';

意味が違っていたら、読み捨ててください。


小トラ  2009-04-22 00:56:32  No: 34136

AY さん、ありがとうございました。

返事遅くなってすみません。

ご指定の方法で解決しました。

  TNumericField(Query1.FieldByName('A'+(IntToStr(KeyNo[III])))).DisplayFormat := '#0"."##';

ヘンな質問ですみませんでした。
うれしくて、ほっとしています。


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

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






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