Hallo, folgender Code produziert mir den Fehler "" kein Gültiger Gleitkommawert, sobald
der feldwert den er einlesen soll 0 ist. Auserdem übernimmt er nur die 1. stelle nach dem komma.
sprich er macht aus 199,24 --> 199,2. das Feld ist in meiner
DB mit numeric(12,2) deklariert.
An was kann das liegen?!?
Delphi-Quellcode:
procedure TForm8.Button1Click(Sender: TObject);
var
masterSL : TStringList;
detailSL : TStringList;
ndx : Integer;
// Laufvariable für Master
begin
masterSL := TStringList.Create;
// Master StringList
detailSL := TStringList.Create;
// Detail StringList
try
detailSL.Delimiter := '
;';
// Trennzeichen der Einträge pro Zeile
detailSL.QuoteChar := '
|';
// Quoting Zeichen.
masterSL.LoadFromFile('
'+edit1.text+'
');
progressbar1.max := mastersl.count;
for ndx := 0
to Pred (mastersl.Count)
do
begin
progressbar1.Position := ndx;
detailsl.Clear;
detailsl.DelimitedText := '
|' + StringReplace(mastersl.Strings[ndx],'
;','
|;|',[rfReplaceAll]);
//detailsl.savetofile('c:\test.txt');
while detailsl.Count < 3
do detailsl.Add('
');
with DataModule2.IBQuery1
do
begin
Close;
SQL.Text := '
INSERT INTO '+edit2.text+'
(Artikelnummer, Bezeichnung, Verkaufspreis) VALUES (:wert1,:wert2,:wert3)';
ParamCheck := True;
ParamByName('
wert1').AsString := detailsl.Strings[0];
ParamByName('
wert2').AsString := detailsl.Strings[1];
ParamByName('
wert3').AsBCD := strtocurr(detailsl.Strings[2]); <-------- das müsste die zeile sein
ExecSQL;
end; datamodule2.IBTransaction1.Commit;
//DataModule2.IBTransaction1.Commit;
//If RecsInTransact > 500 then
//begin
//IBTransaction1.Commit;
//RecsInTransact := 0;
//end;
//inc(RecsInTransact);
end;
finally
FreeAndNil (mastersl);
FreeAndNil (detailsl);
progressbar1.Position := 0;
if MessageDLg('
Einlesen abgeschlossen!',
mtConfirmation,[mbOK],0)=mrOK
then
end;
end;