Entwickler-Ecke
Datenbanken - Fehler bei anlegen eines neuen Datensatzes
a.ebert - Fr 10.02.06 16:19
Titel: Fehler bei anlegen eines neuen Datensatzes
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 - 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
a.ebert - 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:
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 - 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 - Mi 15.02.06 09:05
Danke für eure Hilfe! Hab das Problem jetzt gelöst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!