Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Field Value required Fehler (https://www.delphipraxis.net/81765-field-value-required-fehler.html)

peteress 3. Dez 2006 13:34

Datenbank: Firebird • Version: 1.5 • Zugriff über: dbexpress, TSQLConnection, TSimpledataset

Field Value required Fehler
 
Hallo,

ich bin hier wieder mal schlicht am verzweifeln. Ich will nichts weiter tun, als den fast simpelsten denkbaren Datensatz in eine datenbak schreiben. Das Feld hat als eindeutigen Index einen Feld ID vom typ Integer. Dieses wird mit einem Before Insert Trigger befüllt.

Das folgende Statement von einem Datebanktool wie ibexpert abgesetzt funktioniert wunderbar, das Feld ID wird automatisch befüllt.

SQL-Code:
insert into
"WKZZKundenstammdaten"
("Kunde")
values
('NewTest')
Versuche ich jetzt mit den oben genannten Komponenten in einem Grid (Developer Express) einen neuen Datensatz anzulegen, erhalte ich bereits vor den Erreichen eines applyupdates im Code eine Fehlermeldung:

EDBClient: Field value required.

Gebe ich Pro forma einen Dujmmywert mit, überschreibt der den Wert des Triggers.

Ich habe alle Stellen, die mir eingefallen sind, angepast, d.h. Einstellung in der Fieldkomponente stehen auf

Providerflags.pfinupdate: false
required false

Fielddefs für ID stehen auf requiered false

also aus den Einstellungen der Komponente
Delphi-Quellcode:
  object sdsLieferantenID: TIntegerField
    AutoGenerateValue = arAutoInc
    FieldName = 'ID'
    ProviderFlags = []
    ReadOnly = True
  end

    item
      Name = 'ID'
      Attributes = [faReadonly]
      DataType = ftInteger
    end
Ich hab aber auch alles was mir sonst einfiel an Einstellungen bereits durchprobiert.

Vielen Dank
Peter

sniper_w 3. Dez 2006 13:53

Re: Field Value required Fehler
 
Vielleicht so:
SQL-Code:
insert into
"WKZZKundenstammdaten"
( ID, Kunde)
values
(NULL, 'NewTest')

peteress 3. Dez 2006 15:01

Re: Field Value required Fehler
 
Zitat:

Zitat von sniper_w
Vielleicht so:
SQL-Code:
insert into
"WKZZKundenstammdaten"
( ID, Kunde)
values
(NULL, 'NewTest')

Das SQL-Code snippet funktioniert so wie von mir dargestellt. Deines würde möglciherweise auch funktionieren, aber Delphi weigert sich, irgendeinen Code zu gnerieren, bei dem id nicht auf einen Wert <> Null gesetzt wird.

Setze ich ihn aber auf einen Wert ungleich Null, weigert sich der Trigger mitzuarbeiten. Ich habe jetzt den Trigger so umgearbeitet, dass er einen Wert ungleich Null überschreibt, aber solche Hacks haben natürlich michts mit der Entwicklung hochwertiger, wartbarer Software zu tun.

Peter

hoika 4. Dez 2006 17:51

Re: Field Value required Fehler
 
Hallo,

ich benutze keine Trigger,
sondern hole mir den neuen Wert via stored proc vorher ab.
Das hat auch den Vorteil, dass man bei Detail-Datensätzen
gleich die Master-Id hat.

Bei deinem obigen Bsp konnte man das irgendwie auch machen
(beim Parameter irgendwo), aber ich benutze nur die SP.


Heiko

mkinzler 4. Dez 2006 18:01

Re: Field Value required Fehler
 
Ab FB2 kann man den eingefügten Schlüsselwert auch per Trigger bekommen (Insert ... into ...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 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