Einzelnen Beitrag anzeigen

Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: "" kein gültiger Gleitkommawert

  Alt 21. Jun 2004, 18:47
So, dieser code würde funktionieren, wenn er nicht immernoch eine Kommastelle abschneiden würde. Seltsam ist (dank an r_kerber) wenn ich
statt :wert3 gleich 1.28 eintrag, schreibt er mir auch 1,28 in die DB.
lass ichs über :wert3 laufen macht er wieder 1,2

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');
        DataModule2.IBQuery1.SQL.Text := 'INSERT INTO '+edit2.text+'(Artikelnummer, Bezeichnung, Verkaufspreis) VALUES (:wert1,:wert2,:wert3)';
        DataModule2.IBQuery1.ParamCheck := True;
        while detailsl.Count < 3 do detailsl.Add('');
      with DataModule2.IBQuery1 do
      begin
        ParamByName('wert1').AsString := detailsl.Strings[0];
        ParamByName('wert2').AsString := detailsl.Strings[1];
        ParamByName('wert3').AsString := detailsl.Strings[2];
        ExecSQL;
        end; datamodule2.IBTransaction1.Commit;
        end;

  finally
    FreeAndNil (mastersl);
    FreeAndNil (detailsl);
    progressbar1.Position := 0;
    if MessageDLg('Einlesen abgeschlossen!',
              mtConfirmation,[mbOK],0)=mrOK then

  end;
end;
Zitat von Robert_G:
Das war also gar nicht so falsch
Source:
ParamByName('wert3').AsBCD := strtocurr(detailsl.Strings[2]);
(sourcetabelle ist wieder mit Kommas)

macht er wieder 1,2

wenn ich schreib

ParamByName('wert3').AsBCD := strtocurr('1,28'); trägt er es wieder richtig ein

wobei er dann wieder meckert mit "" ist kein gleitkommwert, sobald als Wert die 0 vorkommt.


also tendier ich zum oberen code!
  Mit Zitat antworten Zitat