AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ominöse "not in edit mode"-meldung
Thema durchsuchen
Ansicht
Themen-Optionen

ominöse "not in edit mode"-meldung

Ein Thema von sancho1980 · begonnen am 23. Feb 2006 · letzter Beitrag vom 25. Feb 2006
Antwort Antwort
Seite 2 von 4     12 34      
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#11

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 13:10
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
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#12

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 13:42
Welchen Status hat dein Dataset zu diesem Zeitpunkt denn genau? (TDataSet.State)
Gruß, Jan
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#13

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:02
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 DatenModul.IBDataSet_AUT.Edit(); einzufügen. Dann kommt die 'not in edit mode'-Meldung schon dort!
Ich hab auch wirklich alles SQL-Statements des DataSet gefüllt!

Laut Delphi-Hilfe ist dieser Aufruf aber auch nicht notwendig:

Zitat von Delphi-Hilfe zu TIBDataSet:
Nach dem Aufruf von Insert können die Benutzer Daten in die Felder des neuen Datensatzes eingeben und anschließend die Änderungen mit Post in die Datenbank oder das Änderungsprotokoll eintragen. (Client-Datenmengen können die zwischengespeicherten Änderungen danach durch einen Aufruf von ApplyUpdates in die Datenquelle eintragen.)
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#14

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:28
Ich hab grad mal die beforeInsert Methode aus meinem DataSet entfernt:

Delphi-Quellcode:
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;
Jetzt auf einmal kommt er über die Stelle hinweg; meckert dafür aber, dass ich das Feld ID nicht belege.
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:
CREATE TRIGGER AUT_BI0 FOR AUT
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  new.ID = gen_id(gen_aut_id,1);
end
^
Das heißt, der müsste IN JEDEN FALL eine neue ID generieren. Funzt aber nicht. Hier is der Wurm drin!
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#15

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:37
Zitat von sancho1980:
Ich hab grad mal die beforeInsert Methode aus meinem DataSet entfernt:
endlich, das wurde auch Zeit


Zitat von sancho1980:
Jetzt auf einmal kommt er über die Stelle hinweg; meckert dafür aber, dass ich das Feld ID nicht belege.
Das ist völlig korrekt, ID ist not null definiert, das hatten wir aber schon:

CREATE TABLE AUT (ID INTEGER NOT NULL ... Also muss das Feld beim insert einen Wert haben. Der Trigger wird ihn überbügeln...


Zitat von sancho1980:
Das heißt, der müsste IN JEDEN FALL eine neue ID generieren. Funzt aber nicht. Hier is der Wurm drin!
Das wird er auch tun, egal was Du ihm beim insert für eine ID gibts.

Gruß

Malte
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#16

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:40
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...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#17

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:45
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.
Gruß, Jan
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#18

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:49
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:
insert into AUT
  (AUT)
values
  ('SANCHO')
schluckt der das problemlos! Da muss ich nicht mal nen wert für ID eingeben!!!

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...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#19

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:51
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
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#20

Re: ominöse "not in edit mode"-meldung

  Alt 24. Feb 2006, 14:56
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...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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