Hallo,
wie kann ich einstellen, dass mir beim anlegen eines neuen Datensatzes das Kombinationsfeld nur Werte vorschlägt, die noch nicht verwendet wurden?
Viele Grüße
Hast Du Dir mein Beispiel angesehen?
Ja,
wirklich schlau werde ich daraus nicht!
Dann stelle doch bitte konkrete Fragen zum Beispiel (falls es Deiner Anforderung entspräche), und ich versuche sie zu beantworten.
Also,
ich habe die Tabelle tblPersonen und die tblMitglieder. Zwischen beiden besteht eine 1:1 Beziehung, da eine Person Mitglied sein kann oder nicht!
In der tblMitglieder wähle ich dann eine Person aus der tblPersonen aus. Das ganze in Form eines Kombinationsfelds.
Leider werden beim Anlegen eines Mitglieds auch die Personen(-daten) angezeigt die bereits einem Mitglied zugewiesen sind und somit eigentlich nicht mehr vergeben/zugewiesen werden dürfen!
Hallo,
warum führst Du beide Tabellen(Felder) nicht in einer zusammen und (tblPersonen) und wirfst die tblMitglieder weg?
Eine 1:1 Beziehung bringt immer erhöhten Verwaltungsaufwand.
Ob eine Person Mitglied ist oder nicht, kann über ein zusätzlich geführtes Ja/Nein-Feld ("IsMitgld") oder vermutlich besser über die Mitgliedsnummer ("MitgldNr)" bestimmt werden.
Dadurch wird eine entspr. Abfrage für das Kombifeld ebenfalls einfacher:
Select * from tblPersonen where IsMitgld = False
bzw.
Select * from tblPersonen where MitgldNr is Null
Okay, das klingt plausibel.
Dann habe ich aber wieder ein Problem.
Wie handle ich die Thematik, dass ein Beitrittsdatum für ein Mitglied nur erforderlich ist, wenn zuvor eine Mitgliedsnummer eingegeben wurde?!
Eine Gültigkeitsregel auf Tabellenebene könnte das erzwingen.([Beitrittsdatum] Is Null And [Mitgliedsnummer] Is Null)
OR
([Beitrittsdatum] Is Not Null And [Mitgliedsnummer] Is Not Null)
Access übersetzt das dann in's Deutsche.
Egal, ob Du nun die Mitglieder in einer Tabelle mit allen Personen zusammen erfasst oder über eine Mitglieder-Tabelle führst, änder das nichts wesentliches am Handling eines gebundenen Kombinationsfelds im Endlosformular. Wenn nicht alle Mitglieder immer zur Auswahl im Kombifeld bereitstehen dürfen/sollen, muss das Kombifeld durch ein oder mehrere Textfeld(er) überlagert werden. Wenn das Kombifeld den Fokus erhält, muss seine Datensatzherkunft oder (wie im Beispiel) sein Recordset angepasst werden.
Hallo,
Wenn ich's nicht falsch verstanden habe, sollte folgende RowSource für das
Kombi den gewünschten Effekt haben.
SELECT PersonenID
FROM tblPersonen
WHERE PersonenID
NOT IN (
SELECT PersonenID_F FROM tblMitglieder)
(oder wie immer die Schlüsselfelder heissen)
gruss ekkehard
Hab das jetzt so eingebaut. Das funktioniert auch super, allerdings nur wenn ich die Tabelle schließe und dann wieder öffne.
Das Speichern des Datensatzes allein reicht leider nicht?!
Hallo,
welche Tabellen?
ZitatWenn nicht alle Mitglieder immer zur Auswahl im Kombifeld bereitstehen dürfen/sollen, muss das Kombifeld durch ein oder mehrere Textfeld(er) überlagert werden. Wenn das Kombifeld den Fokus erhält, muss seine Datensatzherkunft oder (wie im Beispiel) sein Recordset angepasst werden.
Hast Du dies alles befolgt?
Das sagt mir alles nicht viel! :'(
Das sind schlechte Vorraussetzungen für eine erfolgreiche Hilfe. Dir fehlt leider Grundlagenwissen. Ich kann Dir anbieten, in einer von Dir im 2003er-Format hochgeladenen Beispiel-Datenbank, das Kombinationsfeld wunschgemäß zu implementieren. Die Grundlagen zu Access musst Du Dir selbst einsaugen (z. Bsp. über (Einsteiger-)Literatur, OL-Tutorien, Studieren von Beispieldatenbanken, ...).