Autor Beitrag
Funky Fuzzy
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 04.11.04 10:20 
Halli Hallo!! :D

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

Hier erst mal der Auszug aus dem Delphi:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 166
Erhaltene Danke: 6

MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 04.11.04 11:23 
nicht query1.active = true
sondern
query1.execsql
Funky Fuzzy Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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