AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi LookupComboBox mit Bedingung
Thema durchsuchen
Ansicht
Themen-Optionen

LookupComboBox mit Bedingung

Ein Thema von davar · begonnen am 6. Jun 2006 · letzter Beitrag vom 6. Jun 2006
Antwort Antwort
davar

Registriert seit: 4. Feb 2005
311 Beiträge
 
Turbo Delphi für Win32
 
#1

LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 05:28
Datenbank: MySQL • Version: 4.x • Zugriff über: Zeos
Hallo Leute,

habe eine Frage zur LookupComboBox:

ich habe eine Tabelle "Kunden", in der die Kundendaten gespeichert sind. Die Komponente "LookupComboBox1" zeigt mir alle Namen der Kunden an - soweit in Ordnung.

In die Methode "OnClick" habe ich die Abfrage von Rechnungen geschrieben. Aus der Tabelle "rechnungen" werden alle Einträge angezeigt, die dem angeklickten Kunden zugeordnet werden (durch die Kundennummer).

Nun möchte ich gerne die Einträge in der LookupComboBox einschränken, so dass nur die Namen der Kunden angezeigt wird, zu denen auch eine Rechnung vorliegt (ein Datensatz in der Tabelle "rechnungen" vorhanden ist). Kann ich das so ohne weiteres machen und wenn ja, wie?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 05:44
Verwendest du eine LookupComboBox oder eine DBLookupcombobox? Du mußt aber auf jedenfall diese Einschränkung im Query machen (z.B. durch einen Subselect oder Join)
Markus Kinzler
  Mit Zitat antworten Zitat
davar

Registriert seit: 4. Feb 2005
311 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 06:13
Sorry, es handelt sich um die Komponente TDBLookupComboBox.

Jetzt habe ich die Abfrage umformuliert. Bei

'SELECT kundendaten.*, rechnungen.* FROM kundendaten, rechnungen WHERE kundendaten.kundennummer = rechnungen.kundennummer' habe ich das Problem, dass der Kundenname in der DBLookupComboBox genauso oft angezeigt wird wie die Anzahl der Rechnungen..


MfG

davar
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 06:31
Hallo.

Du solltest mit zwei Datasets arbeiten. QR (Rechnungen, SELECT * FROM rechnungen) und QK (Kunden, SELECT * FROM kunden) stehen in einer n:1 Beziehung. Ordne jedem DataSet eine DataSource (DSR, DSK) zu. Die Eigenschaften der DBLookupComboBox setzt du so:

Delphi-Quellcode:
DataField := 'KundenNummer';
DataSource := DSR;
ListSource := DSK
ListField := 'KundenName';
KeyField := 'KundenNummer';
Grüße vom marabu

Edit: KeyField und ListField vertauscht.
  Mit Zitat antworten Zitat
davar

Registriert seit: 4. Feb 2005
311 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 07:13
Zitat von marabu:
Delphi-Quellcode:
DataField := 'KundenNummer';
DataSource := DSR;
KeyField := 'KundenName';
ListField := 'KundenNummer';
ListSource := DSK
Grüße vom marabu
Hallo,

mit den Eigenschaften bekomme ich die Fehlermeldung "Typkonvertierung von Variant ungültig."

Und wenn ich die Eigenschaften ListField und KeyField vertausche, werden alle Namen der Kunden angezeigt, ich kann aber nicht auswählen..
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 07:25
Zitat:
Und wenn ich die Eigenschaften ListField und KeyField vertausche, werden alle Namen der Kunden angezeigt, ich kann aber nicht auswählen..
Was steht unter DataSource?
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 07:28
Sorry, hatte KeyField und ListField vertauscht.

Die Vorgehensweise ist auf die Standard BDE Query (RequestLive = True) bezogen. Bei ZEOS musst du vielleicht noch ein paar Klimmzüge machen. Ich kann dir leider gerade nichts dazu sagen, da ZEOS auf dieser Maschine hier nicht installiert ist.

marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 07:52
Wenn du die Daten der Rechnungen an nicht benötigst kannst du auch Folgendes versuchen:
SELECT distinct kundendaten.KundenNummer,kundendaten.KundenName FROM kundendaten, rechnungen WHERE kundendaten.kundennummer = rechnungen.kundennummer; oder

SELECT kundendaten.KundenNummer, kundendaten.KundenName FROM kundendaten where exists (select kundennummer from rechnungen where KundenNummer = kundendaten.KundenNummer);
Markus Kinzler
  Mit Zitat antworten Zitat
davar

Registriert seit: 4. Feb 2005
311 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: LookupComboBox mit Bedingung

  Alt 6. Jun 2006, 12:12
Zitat von mkinzler:
SELECT distinct kundendaten.KundenNummer,kundendaten.KundenName FROM kundendaten, rechnungen WHERE kundendaten.kundennummer = rechnungen.kundennummer;
Das ist es gewesen. Dankeschön.
  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 08:42 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