Einzelnen Beitrag anzeigen

jmich

Registriert seit: 24. Dez 2007
40 Beiträge
 
#1

Stringgrid Einträge in SQL-Tabelle übernehmen

  Alt 28. Okt 2022, 18:05
Delphi-Version: 11 Alexandria
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
  Mit Zitat antworten Zitat