Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feld in DBComboBox auf Unique überprüfen und eintragen (https://www.delphipraxis.net/182445-feld-dbcombobox-auf-unique-ueberpruefen-und-eintragen.html)

ATS3788 24. Okt 2014 18:09

Datenbank: Firebird • Version: 2.5 • Zugriff über: ZEOSDBO-7.0.3-stable

Feld in DBComboBox auf Unique überprüfen und eintragen
 
Hallo
nach Monaten der Krankheit
versuche ich mal wieder zu programmieren.

Also ich versuche zu erklären
was ich benötige.

Ich habe einen Datenfeld "LOCATION"
und fülle das mit der Zeit mit verschiedenen Werten.

Beim starten möchte ich das ich eine Auswahl
dieser Werte "LOCATION" habe.

Die folgende Routine funktioniert ganz gut.

Meine Frage

Kann man das besser bewerkstelligen ?



Delphi-Quellcode:
procedure TMain.FormShow(Sender: TObject);
var
i : integer;
t : boolean;
begin
DataModule1.ZQuery3.First; // First Dataset
while not DataModule1.ZQuery3.Eof do begin
t := true; // Trigger a new Dataset = true
for i := 0 to DBCoEdLOCATION.Items.Count-1 do
if DBCoEdLOCATION.Items.Strings[i] = DataModule1.ZQuery3LOCATION.Value then
t := false;
// Set new Entry into the DBComboBox
if t then
DBCoEdLOCATION.Items.Add(DataModule1.ZQuery3LOCATION.Value);

DataModule1.ZQuery3.Next;
end;
  end;

mkinzler 24. Okt 2014 18:56

AW: Feld in DBComboBox auf Unique überprüfen und eintragen
 
Versuch es mal so:
Delphi-Quellcode:
procedure TMain.FormShow(Sender: TObject);

begin
  DataModule1.ZQuery3.First; // First Dataset
  while not DataModule1.ZQuery3.Eof do
  begin
    if DBCoEdLOCATION.Items.IndexOf( DataModule1.ZQuery3LOCATION.Value) > -1 then
    begin
      // Set new Entry into the DBComboBox
 
      DBCoEdLOCATION.Items.Add(DataModule1.ZQuery3LOCATION.Value);
    end;
    DataModule1.ZQuery3.Next;  
  end;
end;

ATS3788 25. Okt 2014 10:57

AW: Feld in DBComboBox auf Unique überprüfen und eintragen
 
Danke Markus Kinzler:thumb:

Es ist schön wieder du programmieren:-D

ATS3788 25. Okt 2014 16:30

AW: Feld in DBComboBox auf Unique überprüfen und eintragen
 
Delphi-Quellcode:
if DBCoEdLOCATION.Items.IndexOf( DataModule1.ZQuery3LOCATION.Value) > -1 then
Leider kommt da immer "-1" raus !:(

Dejan Vu 25. Okt 2014 18:53

AW: Feld in DBComboBox auf Unique überprüfen und eintragen
 
Da hat sich der Markus wohl vertippt. mach mal ein '=' draus, oder denk drüber nach, was der Code eigentlich machen soll. Dann wärst Du auch alleine drauf gekommen. Übrigens solltest Du dein FELD 'LOCATION' auslagern. Erstelle also eine Tabelle 'Locations' mit zwei Feldern (ID, Beschreibung), pack dort alle möglichen LOCATION-Werte rein (und gib ihnen eine eindeutige ID). In deiner Haupttabelle trägst Du nun in das Feld LOCATION die passende ID aus der 'Locations' Tabelle ein.

Auf diese Weise hast Du in der Locations Tabelle automatisch alle vorkommenden Werte und damit auch sofort die Werte in deiner DBLookup-Combobox. Diese *zeigt* die Beschreibung aus der Locations-Tabelle an, aber setzt den entsprechenden ID-Wert.

ATS3788 26. Okt 2014 12:34

AW: Feld in DBComboBox auf Unique überprüfen und eintragen
 
Dejan Vu
da hast Du recht

Danke :-D


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