Autor Beitrag
Pott
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Windows
Delphi 5
BeitragVerfasst: Mo 21.11.05 17:20 
Ich bin von Paradox auf Access umgestiegen und jetzt bekomme ich bei einigen Tabellen
bei dynamischen TQuery

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt.
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 21.11.05 23:23 
hallo peter!

poste den string, der sich hinter 's' verbirgt.
vermutlich liegt dort der hund begraben ;)

_________________
mfg, stefan
Pott Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Windows
Delphi 5
BeitragVerfasst: 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.
ausblenden 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


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
// oder mit Access-Abfrage zusammengestellt und in Delphi probiert. 
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 user profile iconraziel: Sql-Tags hinzugefügt.
Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.
Pott Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Windows
Delphi 5
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 67

Win 2000
C# 2008 Express Edition
BeitragVerfasst: 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:

ausblenden 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 ... :

ausblenden 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
Hält's aus hier
Beiträge: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 67

Win 2000
C# 2008 Express Edition
BeitragVerfasst: Fr 13.10.06 10:18 
Ist auf alle fälle mal auszuprobieren.

Danke.