Einzelnen Beitrag anzeigen

WePo

Registriert seit: 11. Jan 2006
Ort: Buttenheim
20 Beiträge
 
Delphi 6 Professional
 
#3

Re: Runden bei einer SQl Abfrage

  Alt 9. Feb 2006, 14:10
Hi,
kenne mich mit access nicht aus, aber dies ist ja wohl ein Problem der Darstellung im DBGrid.
Für nicht persistente Felder, sql-code wie gewünscht,
ein DBGrid mit der datasource einer (zu füllenden) query verbinden
und dann die einzelnen Felder iterieren.
Ich habe dies für mich so gelöst:
Delphi-Quellcode:
procedure Tfsql.DBgridEnter(Sender: TObject);
var
ft:Tfieldtype;
fn,s:string;
i:integer;
begin
      i:=0;
      with query do
      begin
            active:=false;
            sql.clear;
            sql.add(sql.text);
            open;
            dbgrid.datasource:=datasource;
            for i:=0 to fieldcount-1 do
            begin
                  ft:=fields[i].DataType;
                  fn:=fields[i].fieldname; // siehe weiter unten
                  if ft=ftstring then ...
                  if ft=ftinteger then ...
                  if ft=ftword then ...
                  if ft=ftfloat then
                  begin
                         Tfloatfield (fields[i]).displayformat:='0.00';
                         // dein Avg sollte wohl von diesem Typ sein
                  end;
            end; // for to
      end; // with query
end;
Der Zugriff auf den fieldname stellt dir noch weiteres zur Verfügung.
Über weitere if /case Abfragen fields[i].displaywidth einstellen, DBgrid.columns[i].alignment usw.

Werner
Machen wir dem Fehlerteufel einen Knoten in den Schwanz
  Mit Zitat antworten Zitat