Entwickler-Ecke

Datenbanken - Insert mit Query will nicht!


Funky Fuzzy - Do 04.11.04 10:20
Titel: Insert mit Query will nicht!
Halli Hallo!! :D

Ich habe da ein kleines Problem mit dem Insert in eine SQL Tabelle.

Hier erst mal der Auszug aus dem Delphi:

Delphi-Quelltext
1:
2:
3:
4:
5:
OraQuery1.Active := False;
    OraQuery1.SQL.Clear;
    sqlstring := 'insert into ansprechpartner a (anrede,vorname,name,telefonnr,email,gruppe,gruppen_id) VALUES ('''+AnreBox.Text+''','''+VnamEdit.Text+''','''+NamEdit.Text+''','''+TelnrEdit.Text+''','''+EmaEdit.Text+''','''+GrupBox.Text+''',(select '+sqlinsert+' from '+GrupBox.Text+' where '+NumDBEdit.DataField+' = '+NumEdit.Text+'))';
    OraQuery1.SQL.Add(sqlstring);
    OraQuery1.Active := True;


Das einzige nennenswerte ist noch ein Trigger, der eine automatisch generierte ID vergibt.

Leider bekomme ich aber beim Ausführen dieses Skripts immer die Fehlermeldung "SQL statement doesn´t return rows". Vielleicht kann mir mal jemand einen Tip geben. :wink:

Danke schon mal

Fuzzy


jaevencooler - Do 04.11.04 11:13

Moin, Moin, 8)

also grundsätzlich sollte man bei SQL - Statements mit Parametern arbeiten. Das hat den Vorteil das immer wieder benutzte Parameter von der SGA nit mehr geparst werden müssen, ausserdem hilft es der ÜBERSICHT... :wink:

So sollte Dein Statement funktionieren

Version 1)

insert into ansprechpartner
(anrede,vorname,name,telefonnr,email,gruppe,gruppen_id)
VALUES (':Anrede,:Vname,:Name,:Telnr,:Email,:Gruppe,:gruppenid')

Werte zuweisen mit

query.parambyname('anrede').asstring := 'Herr'
usw


Version 2:

insert into ansprechpartner
(anrede,vorname,name,telefonnr,email,gruppe,gruppen_id)
select :Anrede,:Vname,:Name,:Telnr,:Email,:Gruppe,gruppenid from <<Datenquelle>>
where bedingung = bedingung
Werte zuweisen mit

query.parambyname('anrede').asstring := 'Herr'
usw


Beste Grüße
Michael


jasocul - Do 04.11.04 11:23

nicht query1.active = true
sondern
query1.execsql


Funky Fuzzy - Do 04.11.04 12:42

Danke für die Antworten. :D

Der Tip von Jasocul "query1.execsql" hat funktioniert. :!:

Also nochmals vielen Dank und nen schönen Tag noch.

Fuzzy