![]() |
Re: ominöse "not in edit mode"-meldung
hmmm, naja war ja grad der Punkt dass ich *ursprünglich* die ID nicht belegen wollte, damit dass der Server automatisch macht...
aber wir kommen vom Thema ab, hat noch irgendjemand 'ne Idee? Danke, Martin |
Re: ominöse "not in edit mode"-meldung
Welchen Status hat dein Dataset zu diesem Zeitpunkt denn genau? (TDataSet.State)
|
Re: ominöse "not in edit mode"-meldung
der Status ist auf dsBrowse
schon seltsam mir is schon klar, dass ich da keine Daten verändern kann aber es bringt komischerweise auch nichts, vorher
Delphi-Quellcode:
einzufügen. Dann kommt die 'not in edit mode'-Meldung schon dort!
DatenModul.IBDataSet_AUT.Edit();
Ich hab auch wirklich alles SQL-Statements des DataSet gefüllt! Laut Delphi-Hilfe ist dieser Aufruf aber auch nicht notwendig: Zitat:
|
Re: ominöse "not in edit mode"-meldung
Ich hab grad mal die beforeInsert Methode aus meinem DataSet entfernt:
Delphi-Quellcode:
Jetzt auf einmal kommt er über die Stelle hinweg; meckert dafür aber, dass ich das Feld ID nicht belege.
procedure TDatenModul.IBDataSet_AUTBeforeInsert(DataSet: TDataSet);
begin {self.IBQuery_Get_AUT_GEN_ID.Open(); self.IBDataSet_AUTID.AsInteger := DatenModul.IBQuery_Get_AUT_GEN_IDGEN_ID.AsInteger + 1; //ShowMessage(IntToStr(DatenModul.IBQuery_Get_AUT_GEN_IDGEN_ID.AsInteger + 1)); self.IBQuery_Get_AUT_GEN_ID.Close(); } end; Ist mir völlig unverständlich, eildieweil ich mir meinen Trigger noch mal genau angeschaut hab, da ist nix mit if new.id is null; da steht:
SQL-Code:
Das heißt, der müsste IN JEDEN FALL eine neue ID generieren. Funzt aber nicht. Hier is der Wurm drin!
CREATE TRIGGER AUT_BI0 FOR AUT
ACTIVE BEFORE INSERT POSITION 0 AS begin new.ID = gen_id(gen_aut_id,1); end ^ |
Re: ominöse "not in edit mode"-meldung
Zitat:
Zitat:
SQL-Code:
Also muss das Feld beim insert einen Wert haben. Der Trigger wird ihn überbügeln...
CREATE TABLE AUT (ID INTEGER NOT NULL ...
Zitat:
Gruß Malte |
Re: ominöse "not in edit mode"-meldung
ja das ist aber leichter gesagt als getan
ich hab das auch schon probiert, hab den wert mit irgendwas belegt und was kommt dann für 'ne meldung? 'attempt to store duplicate value (visible to active transactions) in unique index AUT_IDX1' der trigger sollte doch jedesmal nen neuen wert erzeugen, oder? probiers mal aus... :wall: |
Re: ominöse "not in edit mode"-meldung
Lösch den Trigger mal aus der DB und erzeug nen neuen. Hört sich blöd an, hilft aber manchmal, da hakt einfach irgendwo was, was kein Mensch versteht :)
Wenn das nicht hilft, dann setz doch das ID-Feld manuell (einfach nen Int hochzählen). Sollte für deine Zweck (Konvertieren von einer DB zur anderen) doch reichen. |
Re: ominöse "not in edit mode"-meldung
1. den trigger kann ich nicht einfach löschen, weil das ne Datenbank ist, die per Script zur Laufzeit erst erzeugt wird, sprich bevor das Programm ausgeführt wird, existiert die Datenbank ja noch gar nicht
außerdem kann's am trigger auch nicht liegen, denn wenn ich in meiner testdatenbank im sql-editor eingebe:
SQL-Code:
schluckt der das problemlos! Da muss ich nicht mal nen wert für ID eingeben!!!
insert into AUT
(AUT) values ('SANCHO') 2. das mit dem hochzählen bringt mir nichts, weil ich nachher aufbauend auf dieser datenbank ja noch die das ganze Terminologie-programm umschreiben muss, und da wird mir selber hochzählen auch nichts bringen, deswegen will ich das jetz schon alles ordentlich machen... |
Re: ominöse "not in edit mode"-meldung
entweder mit after insert
SQL-Code:
ALTER TRIGGER AUT_BI0
ACTIVE AFTER INSERT POSITION 0 AS begin new.ID = gen_id(gen_aut_id,1); end oder Du setzt die ID before insert nur wenn nicht vorgegeben
SQL-Code:
ALTER TRIGGER AUT_BI0
ACTIVE BEFORE INSERT POSITION 0 AS begin if (old.id<=0) then begin new.ID = gen_id(gen_aut_id,1); end end und gibst ihm beim insert ID=-1 mit. Dann ist auch Hansas Frage beantwortet. Gruß Malte |
Re: ominöse "not in edit mode"-meldung
wie gesagt, die datenbank scheint richtig eingerichtet zu sein, schau dir meinen letzten post nochmal an, hab den nochmal editiert...
schätze, das muss irgendwo an meiner delphi-anwendung liegen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz