AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi IBTable funktioniert nicht mit Not-NULL Generator Feld
Thema durchsuchen
Ansicht
Themen-Optionen

IBTable funktioniert nicht mit Not-NULL Generator Feld

Ein Thema von ralfiii · begonnen am 18. Feb 2011 · letzter Beitrag vom 18. Feb 2011
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

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

IBTable funktioniert nicht mit Not-NULL Generator Feld

  Alt 18. Feb 2011, 12:00
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX
Hallo!
Ich hab hier eine Firebird-Tabelle die wie folgt definiert ist:

Code:
CREATE TABLE USERS (USER_ID INTEGER NOT NULL,
        NAME VARCHAR(30) NOT NULL,
        FOO SMALLINT,
CONSTRAINT PK_USERS PRIMARY KEY (USER_ID),
CONSTRAINT UNQ_USERS UNIQUE (NAME));

SET TERM ^ ;
CREATE TRIGGER USERS_BI FOR USERS
ACTIVE BEFORE INSERT POSITION 0 
AS
BEGIN
  IF (NEW.USER_ID IS NULL) THEN
    NEW.USER_ID = GEN_ID(GEN_USER_ID,1);
END ^
COMMIT WORK ^
SET TERM ; ^
d.h. das Feld "User_ID" is sowas wie ein AutoInc-Feld. Man brauch sich da nicht kümmern, man kann einfach ein Insert machen, in dem nur das Feld "Name" gesetzt wird, firebird füllt selber das User_Id aus.

Häng ich nun ein IBTable da dran und will die Tabelle über den IBTable befüllen krieg ich eine Fehlermeldung "Feld 'USER_ID' muss einen Wert haben".

???
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: IBTable funktioniert nicht mit Not-NULL Generator Feld

  Alt 18. Feb 2011, 12:13
Die VCL weiss nicht, dass der Inhalt automatisch durch einen Datenbanktrigger befüllt wird.
Versuche mal, das Property AutoGenerateValue des Felds zu setzen:
Delphi-Quellcode:
procedure TForm1.Query1AfterOpen(Dataset:TDataset);
begin
  Dataset.FieldByName('USER_ID').AutoGenerateValue := arAutoInc;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

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

AW: IBTable funktioniert nicht mit Not-NULL Generator Feld

  Alt 18. Feb 2011, 12:20
Die VCL weiss nicht, dass der Inhalt automatisch durch einen Datenbanktrigger befüllt wird.
Versuche mal, das Property AutoGenerateValue des Felds zu setzen
Ok, ich dachte die Fehlermeldung kommt von Firebird.
Warum kümmert sich die VCL überhaupt darum?!? Und: Wie kann ich ihr das abgewöhnen?

Delphi-Quellcode:
     ... <Gleich beim Start des Programmes, nach dem Verbinden zu Datenbank>
     IBTable1.Open;
     IBTable1.FieldByName('USER_ID').AutoGenerateValue := arAutoInc;
Fehlermeldung: IBTable1: Operation bei geöffneter Datenmenge nicht ausführbar
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: In der Lüneburger Heide
165 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: IBTable funktioniert nicht mit Not-NULL Generator Feld

  Alt 18. Feb 2011, 12:23
Wenn Dein AutoInc-Feld, war ja meist der Fall ist, zufällig das erste Feld innerhalb Deines SQL ist kannst Du diesem Problem mit
Code:
sqlQuery.Fields[0].Required := False;
beikommen. Zumindest bei IBObjects ohne Probleme. Wenn Du eine statische Feldliste benutzt, also innerhalb der IDE einsehbar, dann kannst Du diesen Wert auch dort setzen. Obwohl ich gerade sehe IBTable, aber nun ja, Versuch ist es wert.
Carsten
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

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

AW: IBTable funktioniert nicht mit Not-NULL Generator Feld

  Alt 18. Feb 2011, 12:35
Wenn Dein AutoInc-Feld, war ja meist der Fall ist, zufällig das erste Feld innerhalb Deines SQL ist kannst Du diesem Problem mit
Code:
sqlQuery.Fields[0].Required := False;
beikommen.
Genial!!! Danke, das löst das Problem!
  Mit Zitat antworten Zitat
Antwort Antwort


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 05: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