Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme Float in MySql Datenbank schreiben Hilfe ! (https://www.delphipraxis.net/45287-probleme-float-mysql-datenbank-schreiben-hilfe.html)

saschab 3. Mai 2005 15:17

Datenbank: Mysql • Version: 4.1 • Zugriff über: ZeosLibs

Probleme Float in MySql Datenbank schreiben Hilfe !
 
Hallo zusammen,

langsam bin ich am verzweifeln ich habe einen Datenbank wo ich Werte reinsreiben will. Strings u.s.w klappt auch ohne Probs. Wenn ich aber versuche nen Float wert reinzuscreiben gibt es ne Fehlermeldung.

Delphi-Quellcode:
Query1.Parms.ParamByName('vlimit').Value := RoundTo(StrToFloat(ed_limit.text),-2);
in der editbox steht z.B. 29,33 drinne. In der DB wird es als 29.33 gepeichert. Wenn ich in dem editfeld 29.33 eingebe kann er es nicht mehr zu einem Float konvertieren.

Weis echt nicht mehr weiter. Hoffe auf eure Hilfe.

Sharky 3. Mai 2005 15:25

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
Hai sschab,

warum sagst Du dem ParamByName nicht einfach das Du einen String übergeben möchtest. Die notwendigen Umwandlungen sollten dan automatisch, und richtig, gemacht werden.

Delphi-Quellcode:
  Query1.Parms.ParamByName('vlimit').AsString := ed_limit.text;

saschab 3. Mai 2005 18:27

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
@sharky:

habs gerade mal ausprobiert funz nicht leider. Hast vielleicht noch ne andere Idee?

marabu 3. Mai 2005 18:49

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
Zitat:

Zitat von saschab
in der editbox steht z.B. 29,33 drinne. In der DB wird es als 29.33 gepeichert. Wenn ich in dem editfeld 29.33 eingebe kann er es nicht mehr zu einem Float konvertieren.

Deine Konvertierung mit StrToFloat() ist völlig in Ordnung. Du musst dich irgendwann entscheiden, nach welcher Konvention du deine Zahlen eingeben willst: Dezimalpunkt oder Dezimalkomma. Einstellen kannst du deine Vorliebe systemweit oder anwendungsspezifisch, ja sogar wählbar. Die Unit SysUtils enthält dazu eine Variable DecimalSeparator. Interessieren könnte dich in dem Zusammenhang noch Application.UpdateFormatSettings.

Grüße vom marabu

Sharky 3. Mai 2005 19:06

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
Zitat:

Zitat von saschab
...habs gerade mal ausprobiert funz nicht leider. Hast vielleicht noch ne andere Idee?

:wall: Jetzt habe ich erst gelesen was Du genau geschrieben hast.
Zitat:

Zitat von marabu
Du musst dich irgendwann entscheiden, nach welcher Konvention du deine Zahlen eingeben willst

Ich würde das "Problem" einfach verhindern. Lasse in dem Edit nur die Zeichen zu die gemäß der Landeseinstellungen gültig sind.

Dazu kannst Du im .OnKeyPress der Edits das machen:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9',#8,DecimalSeparator]) then
  begin
    Key := #0;
  end;
end;
Allerdings könnten dann noch "falsche" Eingaben über die Zwichenablage erfolgen.
Ich verwende die Jedi-Komponenten. Dort gibt es ein TJvCalcEdit für die Eingabe von Zahlen.

saschab 5. Mai 2005 19:19

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
Hi,
hab jetzt alle genannten Möglichkeiten probiert und es geht einfach nicht bekomme immer folgende Meldung

Zitat:


SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit,website) VALUES (2,'Sascha','Büscher',1,'Teststr 12','12345','Ofds' at line 1

Dies ist der Quellcode:

Delphi-Quellcode:
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('INSERT INTO kunden (kd_nr,vorname,nachname,anrede,strasse,plz,ort,land,l_vorname,l_nachname,l_anrede,l_strasse,l_plz,l_ort,l_land,tel1,tel2,tel3,fax,handy,email,ansprechpartner,bemerkungen,rabatt,limit,website)');
    query1.SQL.Add('VALUES');
query1.SQL.Add('(:vkd_nr,:vvorname,:vnachname,:vanrede,:vstrasse,:vplz,:vort,:vland,:vl_vorname,:vl_nachname,:vl_anrede,:vl_strasse,:vl_plz,:vl_ort,:vl_land,:vtel1,:vtel2,:vtel3,:vfax,:vhandy,:vemail,:vansprechpartner,:vbemerkungen,:vrabatt,:vlimit,:vwebsite)');
    query1.Params.ParamByName('vkd_nr').Value := StrToInt(ed_kundennummer.Text);
    query1.Params.ParamByName('vvorname').Value := ed_rvorname.Text;
    query1.Params.ParamByName('vnachname').Value := ed_rname.Text;
    query1.Params.ParamByName('vanrede').Value := ranrede;
    query1.Params.ParamByName('vstrasse').Value := ed_rstrasse.Text;
    query1.Params.ParamByName('vplz').Value := ed_rplz.Text;
    query1.Params.ParamByName('vort').Value := ed_rort.Text;
    query1.Params.ParamByName('vland').Value := rland;
    query1.Params.ParamByName('vl_vorname').Value := ed_lvorname.Text;
    query1.Params.ParamByName('vl_nachname').Value := ed_lname.Text;
    query1.Params.ParamByName('vl_anrede').Value := lanrede;
    query1.Params.ParamByName('vl_strasse').Value := ed_lstrasse.Text;
    query1.Params.ParamByName('vl_plz').Value := ed_lplz.Text;
    query1.Params.ParamByName('vl_ort').Value := ed_lort.Text;
    query1.Params.ParamByName('vl_land').Value := lland;
    query1.Params.ParamByName('vtel1').Value := ed_telefon1.Text;
    query1.Params.ParamByName('vtel2').Value := ed_telefon2.Text;
    query1.Params.ParamByName('vtel3').Value := ed_telefon3.Text;
    query1.Params.ParamByName('vfax').Value := ed_fax.Text;
    query1.Params.ParamByName('vhandy').Value := ed_mobil.Text;
    query1.Params.ParamByName('vemail').Value := ed_email.Text;
    query1.Params.ParamByName('vansprechpartner').Value := ed_ansprechpartner.Text;
    query1.Params.ParamByName('vbemerkungen').Value := memo_bemerkungen.Text;
    query1.Params.ParamByName('vrabatt').Value := StrToInt(ed_rabatt.Text);
    query1.Params.ParamByName('vlimit').Value := StrToFloat(ed_limit.Text);
    query1.Params.ParamByName('vwebsite').Value := ed_website.Text;
    query1.ExecSQL;
  except
    on E: Exception do Showmessage(E.Message);
  end;
kann es vielleicht an der Spracheinstellung von Mysql liegen benutze Mysql 4.1 unter windows.

marabu 5. Mai 2005 19:41

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
Zitat:

right syntax to use near 'limit,website)
Der SQL-Parser sagt dir ja genau die Stelle, an der er ein Problem sieht. LIMIT ist ein reserviertes Wort und darf nicht als Spaltenname verwendet werden.

Grüße vom marabu

saschab 5. Mai 2005 19:59

Re: Probleme Float in MySql Datenbank schreiben Hilfe !
 
@marabu:

Danke :-D :bounce1: :firejump: :bounce2:

genau das wars !!!!!!!!!!!!!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 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