Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

TDbGrid checkt automatisch (mit Trigger) gefülltes Feld nicht

  Alt 16. Mär 2011, 18:15
Datenbank: Firebird • Version: 2.1 • Zugriff über: ibx / IBDac
Folgende Situation:

Eine ganz einfache Tabelle bei der die erste Spalte automatisch mit einem Generator gefüllt wird, z.B.

Code:
CREATE GENERATOR GEN_TEST;

CREATE TABLE TEST (
  INTFIELD INTEGER,
  FOO VARCHAR(5));

SET TERM ^ ;
CREATE OR ALTER TRIGGER TEST_BI FOR TEST
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.INTFIELD IS NULL) THEN
    NEW.INTFIELD = GEN_ID(GEN_TEST,1);
END
^

SET TERM ; ^
);
Diese Tabelle hänge ich an einfach (je nach Zugriffsmethode) an eine IBDataSet/TIbTable/IBCQuery -> DataSource -> TDbGrid.
Lege ich da einen neuen Eintrag an (d.h. ich tipp einen String in Spalte zwei und scrolle runter) so wird in der Datenbank die erste Spalte sehr wohl mit dem Wert von Generator gefüllt, das DBGrid checkt das aber nicht, d.h. die erste Spalte bleibt leer.
Scroll ich zurück und will dann den Eintrag löschen so krieg ich bei IBDAC die Fehlermeldung "Update failed. Found 0 records", bei IBTable tut er so als hätte er den Eintrag gelöscht, schliesst und startet man die Anwendung ist der Eintrag aber doch noch da.

Hilfe!
Danke!

Geändert von ralfiii (16. Mär 2011 um 18:26 Uhr)
  Mit Zitat antworten Zitat