Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Runtime Table ist schreibgeschützt bis zum Neustart (https://www.delphipraxis.net/177919-runtime-table-ist-schreibgeschuetzt-bis-zum-neustart.html)

erich.wanker 5. Dez 2013 15:36

Datenbank: Firebird • Version: 2.5 • Zugriff über: Zeol Lib

Runtime Table ist schreibgeschützt bis zum Neustart
 
Hallo Leute..
Hab ein kleines Problem ..
Ich erstelle zur Laufzeit eine Tabelle und anschließend ein paar Felder...
ABER: Ich muß nach dem Erstellen die Software neu starten - um in die Felder was schreiben zu können ?

Meldung wenn ich die Tabelle erstelle und danach was reinschreiben will: Feld "xy" kann nicht verändert werden.

Hier ein paar Zeilen, wie ich die Tabelle erstelle...
Delphi-Quellcode:
    ASQL := 'CREATE TABLE "'+tabellenname+'"'+
            '('+
            ' "STRUCTURE_NR"   INTEGER NOT NULL,'+
            ' "PERMISSION"   CHAR(200) CHARACTER SET ISO8859_1 COLLATE DE_DE,'+
            'CONSTRAINT "PK_'+tabellenname+'" PRIMARY KEY ("STRUCTURE_NR")'+
            ')';

    servermodule.ZConnection1.ExecuteDirect( ASQL ) ;
    servermodule.ZConnection1.StartTransaction;
    servermodule.ZConnection1.Commit;
und die Felder:
Delphi-Quellcode:
ASQL :='ALTER TABLE '+tabellenname+' ADD "'+feldname+'" CHAR(200) CHARACTER SET ISO8859_1 COLLATE DE_DE';

              servermodule.ZConnection1.ExecuteDirect( ASQL ) ;
              servermodule.ZConnection1.StartTransaction;
              servermodule.ZConnection1.Commit;

.. hat jemand eine Idee?

Vielen Dank und einen schönen KRAMPUS-TAG :-)
Erich

jaenicke 5. Dez 2013 15:40

AW: Runtime Table ist schreibgeschützt bis zum Neustart
 
Beim Zugriff mit FireDAC und XE5 funktioniert das mit Firebird problemlos. Das habe ich schon genau so gemacht, abgesehen davon, dass ich die Felder direkt beim CREATE anlege und nicht hinterher mit ALTER TABLE.

Deshalb würde ich mal vermuten, dass das an deiner Zugriffskomponente liegt. Reicht es vielleicht die Verbindung im Programm neu aufzubauen?

DeddyH 5. Dez 2013 15:50

AW: Runtime Table ist schreibgeschützt bis zum Neustart
 
Ich kenne mich mit ZEOS nicht wirklich aus, aber ruft man da wirklich erst ExecuteDirect auf, bevor man die Transaktion startet? Erscheint mir wenig sinnvoll.

Sir Rufo 6. Dez 2013 01:03

AW: Runtime Table ist schreibgeschützt bis zum Neustart
 
Zitat:

Zitat von DeddyH (Beitrag 1238665)
Ich kenne mich mit ZEOS nicht wirklich aus, aber ruft man da wirklich erst ExecuteDirect auf, bevor man die Transaktion startet? Erscheint mir wenig sinnvoll.

Das ist definitiv sinnentleert ;)

So wie ich den Code deute, soll wohl aber für jeden Befehl eine Transaktion gestartet und commited werden.
Das ist genauso sinnentleert.

Fazit: Es ist also wurscht, da kann man sich die Zeilen mit der Transaktion auch gleich sparen.

Manchmal hilft es sich in das Thema einzulesen anstatt einfach nur irgendwelche Befehlsfolgen blind zu übernehmen ohne zu wissen was man da eigentlich macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz