Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Kombinationsfeld

Begonnen von AndyMcNab, Juli 03, 2017, 09:46:49

⏪ vorheriges - nächstes ⏩

AndyMcNab

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

Lachtaube

Hast Du Dir mein Beispiel angesehen?
Grüße von der (⌒▽⌒)

AndyMcNab

Ja,
wirklich schlau werde ich daraus nicht!

Lachtaube

Dann stelle doch bitte konkrete Fragen zum Beispiel (falls es Deiner Anforderung entspräche), und ich versuche sie zu beantworten.
Grüße von der (⌒▽⌒)

AndyMcNab

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!

DF6GL

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


AndyMcNab

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?!

Lachtaube

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.
Grüße von der (⌒▽⌒)

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

AndyMcNab

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?!

DF6GL

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?

AndyMcNab

Das sagt mir alles nicht viel!  :'(

Lachtaube

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, ...).
Grüße von der (⌒▽⌒)