Entwickler-Ecke

Datenbanken - [FireBird] Tabelle ist Schreibgeschützt


mexx - Mi 12.09.07 10:33
Titel: [FireBird] Tabelle ist Schreibgeschützt
Situation:
FireBird v1.5 Datenbank
TwwQuery von InfoPower ähnlich wie TQuery

Query erhält Ihre Datenmenge über einen select-Aufruf auf eine Procedure der Firebirddatenbank. Zum Beispiel: select * from GET_DATENMENGE. Die Query hat eine Updatekompontente, die kein Insert- oder Update-Statement enthält, sondern einen ähnlichen Procedureaufruf wie SET_DATENMENGE. Diese Technik und die Datenbankproceduren GET... und SET... verwende ich an anderen Stellen erfolgreich. Aber bei der Query erhalte ich beim Ausführen der SET_DATENMENGE die Meldung "Tabelle ist Schreibgeschützt". Es gibt keine Unterschiede in den Eigenschaften der Query die nicht funktioniert und der Query, bei der diese Methode funktioniert. Woran kann das noch liegen? Bin für jede noch so unglaubliche Idee dankbar.


mkinzler - Mi 12.09.07 10:42

Hat der (Datenbank-)Benutzer Schreibrechte auf die Tabelle?


mexx - Mi 12.09.07 10:46

Ja, an der DataBase, an der die besagte Query hängt, hängen auch andere Query, die diese Methode verwenden und bei denen funktioniert es. Also sind die Loginparameter korrekt.


mkinzler - Mi 12.09.07 10:53

Machen die Queries auch Updates auf die selbe Tabelle?
Man kann ja die Rechte pro Tabelle setzen.


mexx - Mi 12.09.07 10:56

Ja, machen Sie. Die funktionierende Query führt die selbe Update-Procedure aus, wie die nicht funktionierende Query. Ich habe vor dem Ausführen des Updates einen Haltepunkt gesetzt und die Werte aus den Fields mal manuel im SQL-Editor eingetragen. Die Procedure wurde erfolgreich ausgeführt. Aber aus der Anwendung herraus erhalte ich die Schreibschutz-Meldung.


mkinzler - Mi 12.09.07 10:59

Stimmen die Transaktions-Einstellungen mit den Anderen Queries überein?
Hat die Komponente eine ReadOnly-Property?


mexx - Mi 12.09.07 11:02

Zitat:
Stimmen die Transaktions-Einstellungen mit den Anderen Queries überein?

Die Einstellungen sind bei beiden identisch.

Zitat:
Hat die Komponente eine ReadOnly-Property?

Nein


Danke für Deine Ideen, vielleicht kommt so der zündente Gedanke.


mexx - Mi 12.09.07 11:08

Wie könnte man im Quelltext einer Datenbanktabelle zur Laufzeit oder in einer Transaktion einen Schreibschutz verpassen? Vielleicht passiert dies irgendwo ohne absicht.


mexx - Mi 12.09.07 11:39

Mein Chef hatte die zündente Idee. Hier die Lösung:

Die Parameter in der Update-Anweisung standen nicht mit den Fields der Query überein. In dem Procedureaufruf, welcher in der Updatemethode der TUpdate-Komponente stand, war ein Parameter hinterlegt, welcher im Fields der Query fehlte. Ich habe Ihn als berechnendes Feld hinzugefügt und zur Laufzeit mit einen Wert belegt. Die Meldung bzgl. des Schreibschutzes ist inhaltlich also nicht ganz richtig. "Parameter unvollständig" wäre treffender.