Autor Beitrag
Marxinio
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 02.04.03 08:36 
Hi! Ich hab folgendes Problem: Ich will mit Hilfe von TSQLClientDataSet in eine Access-DAtenbank schreiben! Lesen ist kein Problem!!! Das löse ich folgendermaßen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
  sqlCDatas.Active := false;
  sqlCDatas.CommandType := ctQuery;

  sqlCDatas.CommandText := 'SELECT * FROM Kunden1 WHERE KundenNr = '+inttostr(nr);

  sqlCDatas.Execute;
  sqlCDatas.Active := true;


Beim schreiben möchte ich auf die selbe Art und Weise vorgehen, in der SQL- Anweisung, mit INSERT INTO. Der Datensatz wird zwar in die Access-DAtenbank geschrieben es kommt aber eine Exception.
So sieht meine Schreibroutine aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
  SQLClientDataSet1.Active := false;
  SQLClientDataSet1.CommandType := ctQuery;

  SQLClientDataSet1.CommandText := 'INSERT INTO Kunden1 (KundenNr, KontaktNachname, KontaktVorname) VALUES (9, ''Tester'', ''Testmann'')';

  SQLClientDataSet1.Execute;
  SQLClientDataSet1.Active := true;


Moderiert von user profile iconKlabautermann: Code-Tags hizugefügt
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 02.04.03 09:18 
Hallo,

du dafst bei manipulativen aktionen die Datenmenge nicht öffnen (Aktivieren) da es ja keine ergebnismenge gibt.
Lasse also das
SQLClientDataSet1.Active := true;
weg. Das Execute sollte reichen.

Gruß
Klabautermann
Marxinio Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 02.04.03 09:42 
Wenn ich das weg lasse, dann tritt zwar keine Exception auf, aber der Datensatz wir nicht in die Datenbank geschrieben!!! Muss da noch ne Anweisung hin??
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 02.04.03 12:27 
Hallo,

ich habe noch nicht mit tSQLClientDataSet gearbeitet, deshalb ging ich davon aus, dass
ausblenden Quelltext
1:
SQLClientDataSet1.Execute;					

die Aktion ausführt.
Für gewöhlich gibt es eine Methode namens ExecSQL. Versuche also mal:
ausblenden Quelltext
1:
SQLClientDataSet1.ExecSQL;					


Gruß
Klabautermann