AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage verschluckt Kommas
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage verschluckt Kommas

Ein Thema von shadowman1985 · begonnen am 16. Feb 2006 · letzter Beitrag vom 17. Feb 2006
Antwort Antwort
shadowman1985

Registriert seit: 13. Feb 2006
5 Beiträge
 
#1

SQL Abfrage verschluckt Kommas

  Alt 16. Feb 2006, 21:49
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
Hallo,

hab da eine kleine SQL Abfrage, eigentlich klappt auch alles genau so wie es soll, aber irgendwie wird das Komma verschluckt.

Die SQL Abfrage soll lediglich ein paar Beträge addieren. Das Ergebnis wird auch richtig erfasst, lediglich "ohne" Komma.

Tabelle "endpreis" ist vom Typ String (Werte á la 129,99 oder 19,99)

Code:
Form1.Query1.Active := False;
               Form1.Query1.SQL.Clear;
                        Form1.Query1.Sql.Add('SELECT SUM(CAST(endpreis as float)) AS anzahl FROM verkaeufe WHERE CAST(Angebotsende as date) BETWEEN :tag_von AND :tag_bis');
                        Form1.Query1.ParamByName('tag_von').AsDate := StrToDate('01.'+month_data+'.'+year_data);
                        Form1.Query1.ParamByName('tag_bis').AsDate := StrToDate(IntToStr(anz_tage)+'.'+month_data+'.'+year_data);
               Form1.Query1.Open;
               showmessage(Form1.Query1.FieldByName('anzahl').AsString);
Also Ergebnis käme hier von "9,40 + 10,20" nicht "19,60" heraus, sondern "1960". Ich weiß nicht woran es liegen könnte, hab folgende SQL Abfragen bereits probiert (ohne Erfolg):

Code:
Form1.Query1.Sql.Add('SELECT SUM(CAST(endpreis as integer)) AS anzahl FROM verkaeufe WHERE CAST(Angebotsende as date) BETWEEN :tag_von AND :tag_bis');
Form1.Query1.Sql.Add('SELECT SUM(CAST(endpreis as money)) AS anzahl FROM verkaeufe WHERE CAST(Angebotsende as date) BETWEEN :tag_von AND :tag_bis');
Form1.Query1.Sql.Add('SELECT SUM(CAST(endpreis as float)) AS anzahl FROM verkaeufe WHERE CAST(Angebotsende as date) BETWEEN :tag_von AND :tag_bis');
Form1.Query1.Sql.Add('SELECT SUM(CAST(endpreis as char)) AS anzahl FROM verkaeufe WHERE CAST(Angebotsende as date) BETWEEN :tag_von AND :tag_bis');


Vielen Dank schonmal für die Hilfe
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Abfrage verschluckt Kommas

  Alt 16. Feb 2006, 21:54
Setz mal DecimalSeparator auf ','. Es scheint so als das er die Kommas nicht als Decimal-Trenner erkennt.
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

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

Re: SQL Abfrage verschluckt Kommas

  Alt 17. Feb 2006, 11: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz