![]() |
Delphi-Version: 11 Alexandria
Stringgrid Einträge in SQL-Tabelle übernehmen
Hallo Delphianer,
Habe mal wieder ein Problem wo ich nicht weiter komme. Folgendes: Ich möchte vom einen Stringgrid alle Einträge in eine SQL Tabelle übernehmen. Stringgrid: Nr Bezeichnung Art Preis _________________________________ 1 Artikel 1 Muster 10,00 2 Artikel 2 Test 20,00 3 Artikel 3 Bild 30,00 u.s.w Bei meinen Code wird in der SQL-Tabelle immer leider nur die letzte Stringgrid-Zeile richtig übernommen. ( 3 Artikel 3 Bild 30,00 ) Habe dazu zwei Codes versucht - gleiche Ergebnis. Hier meine Code:
Delphi-Quellcode:
Wie kann man alle Einträge (alle Zeilen) des Stringgrigs in die SQL-Tabelle übernehmen.
procedure Ttestform.btn_saveClick(Sender: TObject);
var LiteConnection : TLiteConnection; LiteQuery: TLiteQuery; i,n,nummer : Integer; preis_um : Double; begin LiteConnection := TLiteConnection.Create(nil); LiteQuery := TLiteQuery.Create(nil); LiteConnection.Database := ExtractFilePath(Application.ExeName)+'testmuster.db'; LiteConnection.Connected := True; LiteQuery.Connection := LiteConnection; LiteConnection.Options.Direct := True; try LiteQuery.Close; LiteQuery.SQL.Clear; LiteQuery.SQL.Add('DELETE FROM' + QuotedStr(lbl_tabellenname.Caption)+''); // z.B tabellenname = mustertest LiteQuery.ExecSql; for i:= sgrid_test.FixedRows to sgrid_test.RowCount-1 do n := 1; begin repeat LiteQuery.Close; LiteQuery.SQL.Clear; LiteQuery.Sql.Add('INSERT INTO '+QuotedStr(lbl_tab_datenbank.Caption)+' (beschreibung,art,preis,nr) VALUES('+QuotedStr(sgrid_test.Cells[1,n])+',' +QuotedStr(sgrid_test.Cells[2,n])+','+QuotedStr(sgrid_test.Cells[3,n])+','+QuotedStr(sgrid_test.Cells[0,n])+ ')'); n := n + 1; // 2.Code { for i:= sgrid_test.FixedRows to sgrid_test.RowCount-1 do begin LiteQuery.Close; LiteQuery.SQL.Clear; LiteQuery.SQL.Text := 'INSERT INTO' + QuotedStr(lbl_tab_datenbank.Caption) + '( '+ '[beschreibung],[art],[preis],[nr]'+ ')'+ 'Values ('+ ':be,:na,:pr,:nnr'+ ')'; LiteQuery.ParamByName('nnr').AsInteger := StrToInt(sgrid_test.Cells[0,i]); LiteQuery.ParamByName('ver').AsString := sgrid_test.Cells[1,i]; LiteQuery.ParamByName('nam').AsString := sgrid_test.Cells[2,i]; LiteQuery.ParamByName('pr').AsFloat := StrToFloat(sgrid_test.Cells[0,i]);; end; LiteQuery.ExecSql; } // 2.Code Ende] until n = i; end; LiteQuery.ExecSql; finally LiteQuery.Free; LiteConnection.Free; end; end; Vielen Dank im Voraus Gruß jmich |
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
Hi Leute,
habe die Lösung selber herausgefunden: hier war der Fehler: LiteQuery.ExecSql gehört mit in die repeat until Schleife und nicht außerhalb. Trotzdem Danke an Alle |
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
Hallöle...8-)
Zitat:
Delphi-Quellcode:
= :kotz:
'INSERT INTO '+QuotedStr(lbl_tab_datenbank.Caption)+' (beschreibung,art,preis,nr) VALUES('+QuotedStr(sgrid_test.Cells[1,n])+',' +QuotedStr(sgrid_test.Cells[2,n])+','+QuotedStr(sgrid_test.Cells[3,n])+','+QuotedStr(sgrid_test.Cells[0,n])+ ')'
.. Besser:
Delphi-Quellcode:
= :thumb:
LiteQuery.SQL.Text := 'INSERT INTO '+ QuotedStr(lbl_tab_datenbank.Caption) + ' (beschreibung,art,preis,nr) VALUES (:P1, :P2, :P3, :P4)';
LiteQuery.ParamByName('P1').AsString := QuotedStr(sgrid_test.Cells[1,n]); LiteQuery.ParamByName('P2').AsString := QuotedStr(sgrid_test.Cells[2,n]); LiteQuery.ParamByName('P3').AsString := QuotedStr(sgrid_test.Cells[3,n]); LiteQuery.ParamByName('P4').AsString := QuotedStr(sgrid_test.Cells[0,n]); Grund: ![]() |
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
Einem Parameter.AsString einen QuotedStr zu übergeben, ist das nicht doppelt gemoppelt und müsste dazu führen, dass die DB-Einträge dann auch gequoted sind?
|
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
CopyPaste...Schei...:oops:
und ja. :wink: Guck mal auf die Uhr...Heute, 07:59...wir haben heute hier Feiertag. 8-) |
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
Nein.
QuoteStr ist für PascalStrings, aber ist und war niemals nicht für SQL-Strings. Einfaches Beispiel ist das
Delphi-Quellcode:
welches davon nicht behandelt wird.
\
Man nehme Parameter oder die EscapeFunktion des DB-Frameworks. |
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
Genau darum geht es doch.
|
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
komisch, vorhin war haentschman ganz bestimmt noch nicht zu sehn :shock:
|
AW: Stringgrid Einträge in SQL-Tabelle übernehmen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz