Autor Beitrag
axlegolas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 10:52 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
TableSet:= TADOQuery.Create(Self);                                        
      TableSet.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+pDatabase+';Persist Security Info=False';
      TableSet.SQL.Clear;
      TableSet.SQL.Add('CREATE TABLE Version(Tabellenname CHARACTER(30) NOT NULL,'+
             'Versionsnummer SMALLINT)');
      TableSet.ExecSQL;
      TableSet.SQL.Clear;
      TableSet.SQL.Add('INSERT INTO Version (Tabellenname,Versionsnummer)');
      TableSet.SQL.Add('VALUES ("Version","'+IntToStr(Tab_Version_VN)+'"),'+
                       '("DerivBestaende","'+IntToStr(Tab_DerivBest_VN)+'"),'+
                       '("RepCashBuchungen","'+IntToStr(Tab_CashRep_VN)+'"),'+
                       '("RepDerivOpenPos","'+IntToStr(Tab_DerivOpenRep_VN)+'"),'+
                       '("RepDerivOrder","'+IntToStr(Tab_DerivOrdRep_VN)+'"),'+
                       '("RepDerivTransList","'+IntToStr(Tab_DerivTransRep_VN)+'"),'+
                       '("RepMarginDetail","'+IntToStr(Tab_MarginRep_VN)+'"),'+
                       '("RepWPBestaende","'+IntToStr(Tab_WPBestRep_VN)+'"),'+
                       '("RepWPOrder","'+IntToStr(Tab_WPOrdRep_VN)+'"),'+
                       '("RepWPTrans","'+IntToStr(Tab_WPTransRep_VN)+'"),'+
                       '("WPBestaende","'+IntToStr(Tab_WPBest_VN)+'");');
      TableSet.ExecSQL;

Fehlermeldung: Fehlendes Semikolon am Ende der SQL Anweisung!?!?

Zudem möchte ich beide ExecSQL zusammenfassen

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.


Zuletzt bearbeitet von axlegolas am Mo 13.02.06 11:09, insgesamt 2-mal bearbeitet
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 11:00 
Ich würde die Abfrage als paramterisierten Query ausführen.
TQuery unterstützt nur einfache Statements, daher ist es nicht möglich mehrere Staements auf einmal auszuführen, dafür gibt es spezielle Komponenten.
Für den Zugriff auf access-Datenbanken sind die ADO-Komponenten besser geeignet.

_________________
Markus Kinzler.
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 11:03 
Deshalb benutze ich auch eine ADOQuery-Komponente

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 11:08 
Zitat:
ich möchte mit einer TQuery einen SQL Befehl ausführen

Deshalb ging ich von der BDE aus. TADOCommand wäre dann die richtige Komponente. Den mehrfach INSERT würde ich aber wegwn der Flexibilität in der Anzahl der einzufügenden Datensätze über eine parameterisierten Query (TADOQuery) machen.

_________________
Markus Kinzler.
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 11:18 
Irgendwie verstehe ich dich nicht. ich benutze doch die ADOQuery. Es funktioniert auch alles ganz gut, bis auf die SQL-Syntax. Die Fehlermeldung sagt mir es fehlt ein Semikolon und ich sehe den Wald vor lauter Bäumen nicht....
Ich habe gehofft mir kann einer sagen wo dieser Fehler liegt (in der Syntax)!!!!

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Mo 13.02.06 11:24 
Welche Datenbank verwendest Du? Außer MySQL kenne ich keine Datenbank, die in einem INSERT - Statement mehrere Wertepaare einfügen kann, sondern immer nur ein Wertepaar pro INSERT. Das würde die Fehlermeldung nach dem fehlenden Semikolon, welches dann nach dem ersten Wertepaar sein sollte, erklären.

Gruß
Thomas
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 11:30 
Ich bin leider gezwungen eine Access-db zu verwenden. Aber bist du sicher, daß es an der Datenbank liegt? Hört sich für mich nicht plausibel an. Ich denke ich werde irgendwo einen kleinen Syntaxfehler eingebaut haben. In anderen Foren oder Tutorials war es nämlich auch möglich...

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Mo 13.02.06 11:35 
Mit Delphi-Tags wärs warscheinlich schneller gegangen...

Am Ende des CREATE TABLE - Statements ist kein Semikolon, tu da mal eins hin.

_________________
Bravery calls my name in the sound of the wind in the night...
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 11:36 
Ein SQL-Query wird immer durch ein Semikolon abgeschlossen. Bei einfachen Queries funktioniert es aber auch ohne.

_________________
Markus Kinzler.
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 11:39 
Die CREATE Anweisung funktioniert, da habe ich das mit dem ; schon probiert. Das Problem ist die INSERT Anweisung da crashst...

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 11:42 
Wie sieht der Code für den mehrfachen INSERT aus?

_________________
Markus Kinzler.
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 11:43 
s.o.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 11:46 
Du benötigst für einen INSERT immer den ganzen Query. Es reicht nicht nur die VALUES zu wiederholen. Nochmal den Vorschlag diesen Teil zu parametrisieren.

_________________
Markus Kinzler.
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 11:50 
Kannst du mir dann kurz erläutern, wie du das meinst mit dem parametisieren?

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 11:59 
Der Eigenschaft TableSet.SQL.Text folgenden Wert zuweisen:
ausblenden SQL-Anweisung
1:
INSERT INTO Version (Tabellenname,Versionsnummer) VALUES( :Tabname, :VerNr);					

Dann mußt du im Sourcecode nur noch die Paramter mit TableSet.Parameters.ParamByName('Tabname').Value := <Wert>;
bzw. .asInteger und TableSet.Parameters.ParamByName('VerNr').Value := <Wert>;setzten.

_________________
Markus Kinzler.
axlegolas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000, WIN XP
D 6,D 2006, C#
BeitragVerfasst: Mo 13.02.06 12:03 
Damit ist das Problem noch immer nicht gelöst, da ich in diesem Fall auch nur eine INSERT Anweisung habe, ich aber doch mehrere Datensätze einfügen muß.!!!!!!!!!

_________________
Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.02.06 13:22 
Wenn du mehere in einem Durchgang einfügen willst mußt du wie schon gesagt für jeden datensatz das gesammte Statement einfügen, oder eben jeweild die Parameter anpassen und mit ExecSql abschließen.

_________________
Markus Kinzler.