Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi New Record -> DBLookUpComboBox wird gelöscht.... (https://www.delphipraxis.net/105928-new-record-dblookupcombobox-wird-geloescht.html)

Stern 2. Jan 2008 13:15

Datenbank: IB • Zugriff über: VLC

New Record -> DBLookUpComboBox wird gelöscht....
 
Hallo zusammen,

zunächst wünsche ich euch allen ein frohes neues Jahr und hoffe, dass die delphipraxis 2008 genauso erfolgreich läuft wie im Vorjahr... ;-) Wobei ich mir in diesem Punkt schon mal ganz sicher bin.

Weniger sicher bin ich mir momentan im Umgang mit einer wwDBLookUpComboBox :oops:
Ich habe eine wwDBLookupComboBox und mehrere DBEdit-Felder. Ich lasse mir die ComboBox und meine Felder aus der DB füllen.
Sämtliche Zuweisungen zu DS, LookUp-Fields, etc... habe ich über die Eigenschaften vorgenommen. Das funktioniert in sofern auch alles wunderbar. Ich kann bestehende Einträge editieren und aus einem DBGrid auch aufrufen. Nun habe ich allerdings ein Problem, wenn ich einen neuen Record anlegen will. Da in der LookUpComboBox der PrimaryKey steht, sollte ich ja nun auch einen neuen in diesem Feld anlegen können. Das geht auch, doch sobald ich das Feld verlasse und in das nächste Feld springe, wird meine ComboBox "geleert" und ich habe dort nichts mehr drinstehen.

Wie gehe ich das am Besten an, dass dieses Löschen beim Verlassen verhindert wird...

Liebe Grüße
Steffi

mikhal 2. Jan 2008 20:05

Re: New Record -> DBLookUpComboBox wird gelöscht....
 
Ich kenne jetzt nicht die speziellen wwLookupComboBoxen, aber normalerweise kannst du in einer DBLookupComboBox nur Werte auswählen, die bereits in der entsprechenden Lookup-Tabelle enthalten sind.

Einen PK lasse ich grundätzlich nicht vom Benutzer eingeben, da sind Probleme vorprogrammiert. Eine PK lasse ich in Firebird prinzipiell über einen Generator füllen. Dazu gibt es verschiedene Methoden, um sicherzustellen, dass das PK-Feld garantiert gefüllt wird: über einen Trigger, bevor der Datensatz gespeichert wird, Aufruf des nächsten Generator-Wertes über GEN_ID(<GeneratorName>,<Step-Wert>) oder bei den IBDAC-Komponenten über die Properties "KeyGenerator", "KeyGields" und "GeneratorStep".

SQL-Code:
-- Beispiel für einen BeforeInsert-Trigger, generiert mit IB Expert
-- Generator GEN_ADR_ID mit einem Autowert füllen
-- zu füllendes Feld ADR_ID => PK der Tabelle ADR_ADRESSEN
CREATE OR ALTER TRIGGER ADR_ADRESSEN_BI FOR ADR_ADRESSEN
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ADR_ID IS NULL) THEN
    NEW.ADR_ID = GEN_ID(GEN_ADR_ID,1);
END
Grüße
Mikhal


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