Autor Beitrag
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 06.12.06 23:50 
hallo miteinand, mal davon abgesehen, dass das problem schon gelöst ist, will ich auch noch meinen senf mit dazu geben ;-)

urspüngliche sql:
ausblenden SQL-Anweisung
1:
2:
form1.query1.SQL.Add('insert into "'+tabelle+'"("'+nrr+'", "'+name+'", "'+Feld+'")
values("'
+form1.Edit1.Text+'","'+form1.Edit2.Text+'","'+form1.Edit3.Text+'")');


lässt sich doch vereinfachen zu:
ausblenden neue SQL plus delphi
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
with form1.query1 do 
begin
 SQL.Add('insert into ? (?, ?, ?) values(?, ?, ?)'); // nur einmalig
 prepare;                                            // nur eimmalig
 params[0] := tabelle;                               // ab hier bei geänderten parametern
 params[1] := nrr;
 params[2] := name;
 parmas[3] := feld;
 params[4] := form1.edit1.text;
 params[5] := form1.edit2.text;
 parmas[6] := form1.edit3.text;
 execSQL; 
end;


jetzt mal ungetestet, müsst aber funktionieren... <HTH>
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Do 07.12.06 00:08 
[quote="user profile iconGrenzgaenger"]
ausblenden neue SQL plus delphi
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
with form1.query1 do 
begin
 SQL.Add('insert into ? (?, ?, ?) values(?, ?, ?)'); // nur einmalig
 prepare;                                            // nur eimmalig
 params[0] := tabelle;                               // ab hier bei geänderten parametern
 params[1] := nrr;
 params[2] := name;
 parmas[3] := feld;
 params[4] := form1.edit1.text;
 params[5] := form1.edit2.text;
 parmas[6] := form1.edit3.text;
 execSQL; 
end;


Pers. arbeite ich nicht mehr mit "Params" - einmal nachträglich einen neuen Parameter eingefügt und der Fehler ist vorprogrammiert. Wie wäre es mit dieser Variante:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
ZQ.SQL.Text := 'Insert Into TableName Set ' +
               'VORNAME   = :Vorname,  ' +
               'NACHNAME  = :Nachname, ' +
                ...
ZQ.ParamByName('Vorname').AsString  := Edit_Name.Text;
ZQ.ParamByName('Nachname').AsString := Edit_Nachname.Text;

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 07.12.06 00:14 
Siehe die allererste Antwort (von mir). 8) Danach kam die '''''-Orgie erst richtig in Fahrt. :lol: Grenzgaenger hat nur das SQL-insert im Klartext im Programm drin stehen. --> Gefahr für nächste '''''-Orgie. :shock: Das gehört nicht in die PAS sondern in die DFM. Siehe auch Beitrag von oldmax. Der schreibts IMHO aber komplizierter, als es ist. Am einfachsten geht es so : rechter Mausklick auf Dataset. SQL-Generator starten. Allgemeines Select-Statement eingeben. Z.B.: SELECT * FOM MEINETABLE Dann "Generate SQLs" auswählen. Insert, Update, Delete usw. werden automatisch erzeugt und zwar richtig ! Sind '"""'''"""" nötig, dann wird das automatisch auch gemacht. Oder eben nicht.

_________________
Gruß
Hansa
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Do 07.12.06 00:27 
user profile iconGrenzgaenger hat folgendes geschrieben:
[...] lässt sich doch vereinfachen zu:
ausblenden neue SQL plus delphi
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
with form1.query1 do 
begin
 SQL.Add('insert into ? (?, ?, ?) values(?, ?, ?)'); // nur einmalig
 prepare;                                            // nur eimmalig
 params[0] := tabelle;                               // ab hier bei geänderten parametern
 params[1] := nrr;
 params[2] := name;
 parmas[3] := feld;
 params[4] := form1.edit1.text;
 params[5] := form1.edit2.text;
 parmas[6] := form1.edit3.text;
 execSQL; 
end;


jetzt mal ungetestet, müsst aber funktionieren... <HTH>

Nein, weder Tabellennamen noch Feldbezeichner können parametrisiert werden.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 07.12.06 00:27 
@Blawen: du hast recht, mit "parambynames" kann man das alles schön vertauschen, aber lurk mal auf den einganstread von lucky, da wollte er alles variabel haben..., den tabellennamen, etc... und das lässt sich eben nur über generische parameter abdecken.. dabei muss er schon wissen was 'n string ist oder nicht... aber sonst geb ich dir schon recht.. die generischen parameter sind nicht so die pracht. auch halt ich gar nix von den parametern und bau mir lieber den sql string selbst zusammen... da weiss ich was ich hab ;-)

noch 'n schönen abend.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 07.12.06 00:29 
user profile iconGrenzgaenger hat folgendes geschrieben:
@robert: bau mir lieber den sql string selbst zusammen... da weiss ich was ich hab ;-)


tja, siehe da... ;-)