Hallo,
habe ein Problem mit ind eine Firebirs-Tabelle irgendetwas zu schreiben. Bekommen den Fehler, daß das verwendete Dataset read-only ist. Lesen aus der Tabelle mit IBDataset ist kein Problem. So ähnlich schreibe ich in Delphie und kenne dort das Problem nicht.
Beispiel:
Sobald ich "DataModule_KS.IBDataSetKunden.Edit" eintrage, bekomme ich den Fehler "IBDatasetKunden : Dataset ist read-only" Habe in der Komponnente nachgeschaut und nirgens ein Read-Only gefunden. Wusste auch nicht, dass ein Dataset diese Eigenschaft haben kann. Bitte um Hilfe.
Um draufzukommen was los ist, würde ich ein manuelles UPDATE Statement absetzen und prüfen ob und welche Meldung von der Datenbank kommt.
Hast du evtl einen Login der nur lesen darf?
Bei SQlite hab ich das mal öfter wenn ich mit einem anderen Programm die Datenbank gleichzeitig offen habe. Gibt es bei Firebird einen SingleUser Modus ? (bzw hast du mit einem anderen Programm die DB im Exclusive Mode geöffnet?)
für die erstellung der Tabelle unter Firebird und ggfls. Änderung der Daten in diesen Tabelle, benutze ich das Tool FlameRobin. Damit kann ich schreiben, was ich will. Kein Problem. Ich habe auch im Netz schon etwas darüber gelesen, jedoch ohne eindeutige Hinweise auf mögliche Lösung. Einer hat wohl Was gefunden, aber danach sich nicht mehr gemeldet und den Anderen, in diesem Portal, etwas mitgeteilt.
Habe in der Komponnente nachgeschaut und nirgens ein Read-Only gefunden.
Leider erwähnst du nirgends, was für eine Komponente das ist. TCustomBufDataSet führt nämlich durchaus ein public property ReadOnly ein, und TSQLQuery macht es dann auch published, dh im ObjektInspektor sichtbar.
Sicher, dass das nicht versehentlich auf True steht...?
Hallo gladio,
habe vergessen mein Profil zuu aktualisieren. Es ist die akl. Version.
Hallo Sieben,
das Package ist Firebird und die Komponenten: TIBDatabase, TIBDataset usw. Die Teile benutze ich auch in Delphi und da kenne ich diese Fehlermeldung nicht. Deshalb bin ich hier irritiert.
Luckner hat geschrieben: Mo 11. Apr 2022, 23:05 Die Teile benutze ich auch in Delphi und da kenne ich diese Fehlermeldung nicht. Deshalb bin ich hier irritiert.
Lazarus/FPC ist NICHT Delphi !!! Auch wenn vieles Quellcodekompatibel __erscheint__. Auch die Datenbanktreiber sind unter Umständen anders bzw. die implementation. Daher kann man NICHT Erwarten das beides gleich ist bzw. reagiert.
Die IB-Komponenten habe ich schon länger nicht in Verwendung, allerdings hängt bei SQLDB es davon ab, ob der Primary Key richtig anggegeben bzw. von der automatik erkannt wird. Ob es Forward Cursor ist - der ist auch RO. Ob es eine View ist, die ohne die richtigen SQL-Statements auch nicht aktualisierbar ist. Die Benutzerrechte nicht stimmen.
Am häufigsten kenne ich das mit dem Problem das der PK nicht richtig dedektiert wurde und ohne den, ist ein Dataset immer RO.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Luckner hat geschrieben: Mo 11. Apr 2022, 16:43
Sobald ich "DataModule_KS.IBDataSetKunden.Edit" eintrage, bekomme ich den Fehler "IBDatasetKunden : Dataset ist read-only" Habe in der Komponnente nachgeschaut und nirgens ein Read-Only gefunden. Wusste auch nicht, dass ein Dataset diese Eigenschaft haben kann. Bitte um Hilfe.
Ich vermute, dass du die Komponente IPExpress von MWA-Software im Einsatz hast. Das dortige IBDataset hat keine Property 'ReadOnly'. Aber in der Edit-Prozedur wird 'CanModify' abgefragt. Diese Property ist im IBDataset überschrieben worden. Es löst die Exception aus, wenn nicht mindesten die Property 'ModifySQL' ein SQL-Statement enthält.
IBExpress hilft dir bei der Erzeugung eines korrekten SQL-Statements.
danke für den Tipp mit dem "Property 'ModifySQL' ein SQL-Statement". Das war es in diesem Fall. Habe dort Was eingetragen und schon funktioniert es. Danke.