Autor Beitrag
a.ebert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Fr 10.02.06 16:19 
Moin!

Schreib grad an einem Kalkulationsprogramm, welches auf eine Datenbank zugreifen soll. Das ganze hab ich mit einer BDE versucht zu lösen.
In meiner Form hab ich jetzt mehrere DBEdit-Felder. Dabei führen manche Berechnungen aus, die dann in weiteren DBEdit-Feldern ausgegeben werden sollen(ReadOnly ist bei den Ausgabefeldern auf true gesetzt).

Ich geb die Zahlen in die DBEdit-Felder ein und diese werden dann an meine vorgefertigte Tabelle übertragen.
Die Datenbank funktioniert auch solange ich nur einen Datensatz eingebe. Wenn ich dann einen weiteren Datensatz anlegen will kommt folgende Fehlermeldung:

Im Projekt Project1.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung:'''ist kein gültiger Gleitkommawert'. Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.

Allerdings hab ich alle Felder ausgefüllt. Auch die Typwandlung von StrToFloat und zurück ist richtig, da die Berechnungen funktionieren. Wäre wirklich fantastisch, wenn ihr mir irgendwie helfen könntet oder nen Typ geben, wie man diese Fehlermeldung bereinigen kann.

Danke schonmal Andy!
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: Sa 11.02.06 19:03 
naja, des sagt nicht wirklich viel aus!

laut der fehlermeldung versuchst du ein leeres feld in einen floatwert umzuwandeln! kann es sein, des du die umwandlung nach einem append oder so machst? weil da werden glaube ich alle felder gelerrt!

aber ich bin mir im moment ne ganz sicher!

prüf des ma! und wo kommt der fehler? also in welcher zeile?

matthias

_________________
Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
a.ebert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Mo 13.02.06 09:13 
Einen append nutz ich nicht! Die Fehlermeldung erscheint, dann befinde ich mich in der Unit Project1 in der letzten Zeile(end.). Danach geh ich mit einem Einzelschritt weiter und gelang in folgendes DBEidt-Feld:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TfrmFahrerNeu.DBEdtZuschlagJahrChange(Sender: TObject);
begin
  if DBedtZuschlagJahr.Text = '' then DBedtZuschlagMonat.Text:=''
  else DBedtZuschlagMonat.Text:= FloatToStrF(((StrToFloat(DBedtZuschlagJahr.Text))/12),ffFixed,15,2);

 if DBedtAnzEinsatz.Text = '' then DBedtZuschlagTag.Text:=''
  else DBedtZuschlagTag.Text:= FloatToStrF(((StrToFloat(DBedtZuschlagJahr.Text))/(StrToFloat(DBedtAnzEinsatz.Text))),ffFixed,15,2);

 if DBedtLohnMonat.Text = '' then DBedtSozialkostenJahr.Text:= '';
   if DBedtLohnMonat.Text <> '' then
    if DBedtZuschlagJahr.Text <> '' then
     if DBedtNebenkosten.Text <> '' then
     DBedtSozialkostenJahr.Text:=FloatToStrF((((((StrToFloat(DBedtLohnMonat.Text))*12)+(StrToFloat(DBedtZuschlagJahr.Text)))*(StrToFloat(DBedtNebenkosten.Text)))/100),ffFixed,15,2);

 if DBedtSpesenJahr.Text = '' then DBedtLohnkostenJahr.Text:='';
   if DBedtLohnMonat.Text <> '' then
    if DBedtZuschlagJahr.Text <> '' then
     if DBedtSozialkostenJahr.Text <> '' then
      if DBedtSpesenJahr.Text <> '' then
      DBedtLohnkostenJahr.Text:=FloatToStrF((((StrToFloat(DBedtLohnMonat.Text))*12)+(StrToFloat(DBedtZuschlagJahr.Text))+(StrToFloat(DBedtSozialkostenJahr.Text))+(StrToFloat(DBedtSpesenJahr.Text))),ffFixed,15,2);


In der letzten Zeile ist wahrscheinlich der Fehler,denn diese wird angezeigt, wenn ich mit eienm Einzelschritt weiter geh.
Wenn ich dann einen weiteren Einzelschritt mache, werden erst 6 der zu berechnenden Felder gelöscht und eine Fehlermeldung erscheint (''ist kein gültiger Gleitkommawert).
Wenn ich dies bestätige, kommt wieder die ursprüngliche Fehlermeldung. Ich komme wieder in das selbe DBEdit-Feld im Quelltext und geh wieder so vor wie vorher. Dann werden die anderen 6 zu berechnenden Felder gelöscht und es erscheint wieder ''ist kein gültiger Gleitkommawert. Ich bestätige dies wieder und dann sind alle Felder leer und ich kann einen neuen Datensatz anlegen.

Kann mir das vielleicht einer erklären bzw. mir nen tip geben wie ich diese suspekten Fehlermeldungeen wieder loswerde?

Andy
jsfrigo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

win xp, Win7
D2010
BeitragVerfasst: Mo 13.02.06 16:57 
Ich würde es mal mit DBCalcEdits versuchen.Dann sollte es nicht möglich sein das ein leerer String auftaucht.
Ich denke das Deine Berechnungen evtl in on change-ereignissen durchgeführt werden. Da konnte der fehler auch herkommen.
Gruß
Jörg
a.ebert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Mi 15.02.06 09:05 
Danke für eure Hilfe! Hab das Problem jetzt gelöst.