Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: SQL Abfrage verschluckt Kommas

  Alt 17. Feb 2006, 10:23
Hallo Schattenmann, bei mir funktioniert das:

Delphi-Quellcode:
// uses DateUtils;

function TDemoForm.ProjectedSum(year, month: Word): Extended;
const
  SEL
    = 'SELECT SUM(CAST(endpreis as float)) '
    + 'FROM verkaeufe WHERE CAST(Angebotsende as date) '
    + 'BETWEEN :tag_von AND :tag_bis'
    ;
var
  dtPrimo, dtUltimo: TDateTime;
begin
  dtPrimo := EncodeDate(year, month, 1);
  dtUltimo := EncodeDate(year, month, DaysInAMonth(year, month));
  with QProjectedSum do
  begin
    SQL.Text := sel; // muss eigentlich nur einmal gemacht werden
    ParamByName('tag_von').AsDate := dtPrimo;
    ParamByName('tag_bis').AsDate := dtUltimo;
    Open;
    Result := Fields[0].AsFloat;
    Close;
  end;
end;
Allerdings würde ich die Tabelle so umformen, dass ENDPREIS als Währungsbetrag ($) gespeichert wird, da der Dezimalpunkt umkonfiguriert werden kann und das Programm dann nicht mehr funktioniert. Auch das Angebotsende sollte aus den gleichen Gründen den richtigen Feldtyp haben. Du kannst die Tabelle mit dem Tool Datenbankoberfläche umformen. Mache es mit einer Kopie, damit du auf eventuelle Fehler reagieren kannst. Wenn du eine dedizierte Query-Komponente spendierst, dann muss der SQL-Text nicht jedesmal neu gesetzt werden.

Grüße vom marabu
  Mit Zitat antworten Zitat