Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

Re: Hochkomma entfernen -> INSERT INTO-Problem

  Alt 7. Nov 2008, 12:01
Hallo,

[OT]Xong war schneller als ich [/OT]

@HolgerCW

wenn Du es auf diese Art und Weise machen willst, musst Du wohl sowas machen:
Delphi-Quellcode:
with DM_Query_XYZ do
begin
  QueryInsert.Close;
  QueryInsert.SQL[0] := 'INSERT INTO ' + Tabelle + '';
  QueryInsert.SQL[1] := '(' + Spalten + ')';
  QueryInsert.SQL[2] := 'VALUES(' + AnsiReplaceText(Werte,'''','''''') + ')';
  QueryInsert.ExecSQL;
end;
Nichtsdestotrotz überleg' Dir, ob Du das nicht doch lieber über Parameter machen willst.

Delphi-Quellcode:
procedure Datensatz_insert(Query : TAdoQuery;Werte: tStringList; Spalten: tStringList; Tabelle: String);
Var
          i : Integer;
          sParams : String;
          sSpalten : String;
begin
  if Werte.Count <> Spalten.Count then begin
    ShowMessage('Keine Übereinstimmung im Werte-/Spaltenpaar.');
    Exit;
  end;
  Query.Close;
  Query.SQL.Clear;
  sParams := '';
  sSpalten := '';
  for i := 0 To Werte.Count - 1 Do begin
    if i = Werte.Count - 1 then begin
      sSpalten := sSpalten + Spalten[i];
      sParams := sParams + ':' + Spalten[i];
      Query.Parameters.AddParameter.Name := Spalten[i];
    end else begin
      sSpalten := sSpalten + Spalten[i] + ',';
      sParams := sParams + ':' + Spalten[i] + ',';
      Query.Parameters.AddParameter.Name := Spalten[i];
    end;
  End;
  Query.SQL.Add('Insert into ' + Tabelle + '(');
  Query.SQL.Add(sSpalten);
  Query.SQL.Add(') values (');
  Query.SQL.Add(sParams);
  Query.SQL.Add(')');
  for i := 0 To Werte.Count - 1 Do Query.Parameters[i].Value := Werte[i];
  Query.ExecSQL;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
  Werte : TStringList;
  Spalten : TStringList;
begin
  Werte := TStringList.Create;
  Spalten := TStringList.Create;
  Werte.Add('Wert 1'); // Das könnte man ggfls. auch als Commaseperated übergeben
  Werte.Add('Wert 2');
  Werte.Add('Wert 3');
  Spalten.Add('Spalte1');
  Spalten.Add('Spalte2');
  Spalten.Add('Spalte3');
  Datensatz_insert(QueryInsert, Werte, Spalten, 'Tabelle');
  Werte.Free;
  Spalten.Free;
end;
Hat bei mir soeben funktioniert.
  Mit Zitat antworten Zitat