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:
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;
Wie kann man alle Einträge (alle Zeilen) des Stringgrigs in die
SQL-Tabelle übernehmen.
Vielen Dank im Voraus
Gruß jmich