Entwickler-Ecke
Datenbanken - MS-Access: TQuery ->"Tabelle ist schreibgeschützt".
Pott - Mo 21.11.05 17:20
Titel: MS-Access: TQuery ->"Tabelle ist schreibgeschützt".
Ich bin von Paradox auf Access umgestiegen und jetzt bekomme ich bei einigen Tabellen
bei dynamischen TQuery
Delphi-Quelltext
1: 2: 3: 4:
| qryRENTENSTAAT.Active:=False; qryRENTENSTAAT.SQL.Clear(); qryRENTENSTAAT.SQL.Add(s); qryRENTENSTAAT.Active:=True; <= hier. |
die Fehlermeldung: "Tabelle ist schreibgeschützt". Obwohl Db zu usw.
Ein einfaches "SELECT * FROM... " funktioniert noch.
Jedoch ein JOIN mit einer 2. Tabelle geht nicht mehr,
und ein "SELECT FeldX As X, ..." geht auch nicht mehr.
Mit einigen Tabellen geht's mit, mit anderen nicht mehr.
Kann mir da jemand helfen.
Peter
Moderiert von
raziel: Delphi-Tags hinzugefügt.
grayfox - Mo 21.11.05 23:23
hallo peter!
poste den string, der sich hinter 's' verbirgt.
vermutlich liegt dort der hund begraben ;)
Pott - Di 22.11.05 10:19
Titel: Verschiedene Abfragen versucht.
Vorhin hatte ich falsch geschrieben, dass es mit einigen Tabellen geht.
Joins gehen mit keiner Access Tabelle.
Hier nun einfache Joins mit 2 Tabellen.
SQL-Anweisung
1: 2: 3: 4: 5:
| // Im Explorer zus. gestellt. SELECT Haushalte.Stand, HhId, Familien.Anrede, Titel, Familien.Id, Status, Familien.Name, Familien.Vorname, Geschl, Gebdat, Gebort, Arbeitsort FROM Familien, Haushalte WHERE HhId = Haushalte.Id AND HhId = 1 |
Delphi-Quelltext
1: 2: 3: 4: 5:
| s:='SELECT Haushalte.Stand, Familien.Anrede, Familien.Titel, Familien.Status, '+ ' Familien.Vorname, Familien.Name, Familien.Gebdat '+ 'FROM Haushalte INNER JOIN Familien '+ ' ON Haushalte.Id = Familien.HhId'; |
Beide Abfragen funktionieren im Db-Explorer, aber mit TQuery nicht mehr: "Tabelle ist schreibgeschützt."
Habe auch schon Odbc-Treiber und -Driver versucht.
Ist Delphi5 vielleicht schon zu alt? Oder kann Delphi5 noch nicht mit Access Dbs.
Peter
Moderiert von
raziel: Sql-Tags hinzugefügt.
Moderiert von
raziel: Delphi-Tags hinzugefügt.
Pott - Di 22.11.05 18:42
Titel: Keine JOINs, wenn man Daten ändern will?!?!
Die Antwort auf mein Problem oben scheint zu sein, dass man bei Joins in der TQuery keine
Daten im DBGrid ändern kann.
Angeblich soll sich in Delphi bei TQuery.RequestLive dann automatisch auf False setzen.
Peter
didiwerdau - Mi 11.10.06 13:14
Hallo, habe ein ähnliches Problem. Deshalb schreibe ich es gleich mal hier mit rein.
Ich habe eine Sybase Datenbank und wollte gerade einen Join auf eine zweite Tabelle in ein bestehendes TQuery einfügen.
alter SQL-String:
Delphi-Quelltext
1: 2: 3: 4: 5:
| Select * from T_DL where ID_Unternehmen = :ID_Unternehmen order by Key_DL |
wenn ich den String so abändere ... :
Delphi-Quelltext
1: 2: 3: 4: 5:
| Select * from T_DL dl join T_Erloeskontierung ek on dl.ID_Erloeskontierung = ek.ID_Erloeskontierung where ID_Unternehmen = :ID_Unternehmen order by Key_DL |
... dann bekomme ich auch den Fehler "Tabelle ist schreibgeschützt".
Scheint irgendwie doch was mit den joins zu tun zu haben, oder?
sirwitti - Do 12.10.06 14:14
hallo!
ich habe dasselbe problem.
ich glaub ich habs gefunden. in der hilfe steht beim parameter requestlive von tquery, dass multi table select immer ein readonly-dataset zurückliefern.
und der parameter requestlive bestimmt, ob das dataset upgedated also geändert werden kann.
d.h. wenn requestlive auf true ist, dann gibts die exception.
interessanterweise ist bei meiner tquery (wird zur laufzeit erzeugt) requestlive auf true gesetzt. bei den komponenten zur designtime is requestlive standardmäßig aber auf false.
ich hab jetzt einfach "manuell" requestlive auf false gesetzt, bevor ich die query ausführe und es dürfte funktionieren.
vlt bringt euch das auch ein stück weiter.
beste grüße, witti
didiwerdau - Fr 13.10.06 10:18
Ist auf alle fälle mal auszuprobieren.
Danke.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!