Problem mit Combobox

Hallo Xperten,

ich hab’ mal wieder ein kleines Problemchen (Access97+2000+xp)! Um es ein wenig anschaulicher zu machen, könnt Ihr Euch die Beispiel-DB (nur 10 kB) von http://www.woly.org/wer-weiss-was\testdb1.zip 'runterladen.

Also, es gibt zwei Tabellen:
a) Mitarbeiter „MATab“ mit ID, Name und Sperrkennzeichen
b) Daten „DatenTab“

In die Datentabelle sollen jetzt die Mitarbeiter irgendwelche Einträge (im Beispiel mal nur Notizen) machen können. In einer DropdownCombo soll man aus der Liste der Mitarbeiter wählen können, für wen die Notiz gedacht ist. Soweit-sogut!

Wenn jetzt ein Mitarbeiter das Team verlässt, wird er gesperrt. Dazu setze ich in der Mitarbeitertabelle ein entsprechendes Kennzeichen („MAgesperrt“). Unter anderem bewirkt dies, daß dieser Mitarbeiter nicht mehr (unnötigerweise) in den Dropdown-Combos erscheint. Dummerweise werden jetzt aber bestehende Einträge des gesperrten Mitarbeiter (im Beispiel Karl) leer angezeigt. Die übrigen Mitarbeiter können also nicht mehr sehen, wessen Eintrag das mal war.

Wie bekomme ich es hin, daß bei alten Einträgen zwar der Name des (gesperrten) Mitarbeiters angezeigt wird, aber nicht mehr in der Combo auftaucht?

Das Problem tritt nicht auf, wenn ich auf die ID verzichte und den Namen direkt verlinke. Aus datenbanktechnischen Gründen möchte ich das jedoch nicht… Wer-Weiss-Was?

Gruß
(Woly)

Wie bekomme ich es hin, daß bei alten Einträgen zwar der Name
des (gesperrten) Mitarbeiters angezeigt wird, aber nicht mehr
in der Combo auftaucht?

Die Lösung ist: nimm einfach ein weiters Feld, das NICHT als Pulldown Verwendung findet und keine Einschränkungen in der Abfrage wie das Pulldownfeldes hat. Also MATab und DatenTAB als Abfrage verbinden und als Basis für das Formular verwenden. Z.B. MAnameX dann als neues Feld mit den Daten von MAname in der Abfrage definieren.

Noch besser: verwende zwei Formulare : eins zum Eingeben, eins zum Anzeigen. Eine Super Lösung wäre z.B. ein Haupt- mit einem Unterformular. Hauptformular für die Eingabe, Unterformular für die Ausgabe.

Gruß
Wolfgang

…noch nicht ganz!
Hallo Namensvetter,

das wäre aber eher eine holprige Lösung… :-/

Ich schätze, ich habe schon verstanden, was Du beschrieben hast, aber das Ganze findet in der Datenblattansicht statt und die ist eh’ schon ziemlich vollgepackt. Eine Hilfsspalte kann ich den Benutzern nicht auch noch zumuten.

Ein- und Ausgabeformular zu trennen wäre technisch eine Möglichkeit, ist in diesem Fall aber eher unpraktisch für die User.

Ich habe mittlerweile eine Möglichkeit gefunden, die allerdings leider nur in der Einzelformularansicht funktioniert. Beim Wechsel in den jeweiligen Datensatz wird die Query der Combo jedesmal neu geschrieben und um den Eintrag der gesperrten Person ergänzt. Aber wie gesagt, ich brauch’s in der Datenblattansicht… *seufz*

Naja… vielleicht fällt mir noch was anderes ein! Auf jeden Fall schonmal danke für Deine Hilfe und Mühe!

Gruß
(Woly)

Hallo Namensvetter,

DITTO

Ich schätze, ich habe schon verstanden, was Du beschrieben
hast, aber das Ganze findet in der Datenblattansicht statt und
die ist eh’ schon ziemlich vollgepackt. Eine
Hilfsspalte kann ich den Benutzern nicht auch noch
zumuten.

LOL, ne, die kann man ja auch AUSBLENDEN, sorry das hatte ich nicht erwähnt !! Schau mal in Deine Mails, habe Dir die Lösung mal geschickt.

Gruß
Wolfgang

Hallo Wolfgang,

danke für die DB; ist angekommen. Anscheinend hatte ich Dein letztes Posting doch falsch verstanden. Das mit der Textbox kann ich beim Anzeigen von Datensätzen natürlich so machen!

Allerdings können jetzt die Benutzer beim Anlegen neuer Datensätze und beim Pflegen vorhandener Datensätze keine Benutzerzuweisung mehr treffen; die Combobox ist ja weg *schnief*

Ich könnte zwar zwischen „View-Mode“ und „Edit-Mode“ unterscheiden, aber da gehen mit die Benutzer auch schon wieder an den Kragen :smile:

Hast Du noch 'ne Idee? *kopfeinzieh*

Gruß
(Woly)

Hast Du noch 'ne Idee? *kopfeinzieh*

Klar Woly,

in der Abfrage der Pulldown-Feldes MAname folgenden Code eingeben:
SELECT MATab.MAID, IIf(magesperrt,MAName & " (gesperrt)",maname) AS Maname1, MATab.MAgesperrt FROM MATab;

Die Anzahl der Spalten auf 3 erhöhen!

Beim Ereignis: „Fokusverlust“ folgenden Code eingeben:

Private Sub MAID_LostFocus()
If Me.MAID.Column(2) = True Then ’ Mitarbeiter wurde gesperrt
MsgBox Me.MAName & "wurde gesperrt ! " & vbCrLf & „Keine Eingabe möglich !“
DoCmd.GoToControl „MAID“
End If
End Sub

Quick and dirty, aber sollte funktionieren!
Die Spalte MAname kannst Du dann wieder Einblenden :smile:

Gruß
Wolfgang

Neue Formulierung…
Hallo Wolfgang,

ist leider immer noch nicht das, was ich brauche. In diesem Fall wird geprüft, ob ein gesperrter Mitarbeiter ausgewählt wurde. Ist in Ordnung, aber darum ging’s mir halt nicht. Es ist auch schwer zu formulieren; ich versuch’s halt nochmal:

Die Combobox sollte (alleine schon wegen der Übersicht) nur die nicht gesperrten Mitarbeiter zur Auswahl anbieten. Wenn meine Query der Combobox SELECT MAID, MAName FROM MATab; lautet, hab’ ich dieses Problem ja gelöst. Allerdings werden bereits bestehende Einträge von mittlerweile gesperrten Mitarbeitern nun namenlos angezeigt. Stattdessen sollte jedoch der Name des (gesperrten) Mitarbeiters angezeigt werden.

Danke nochmal und Gruß
(Woly)

Hallo Wolfgang,

ich habe Dein Problem verstanden. In der Abfrage zur Combobox zeigst Du nur die Nichtgesperrten Mitarbeiter an (verbietest also die Ansicht der Gesperrten). Möchtest aber in der Datenbalttansicht, das alle Mitarbeiter (auch die Gesperrten) angezeigt werden sollen, obwohl Du diese vorher gesperrt hast. Das Problem ist, das Du dafür das selbe Feld verwenden willst.

Wie ich schon sagte: entweder - oder, beides gleichzeitig geht nicht. Du kannst mit einem Auto auch nicht gleichzeitig vor und zurück fahren :smile:

Mit einem zusätzliche Feld, oder dem Workaround im letzten Posting würde es gehen.

Gruß
Wolfgang

Die Combobox sollte (alleine schon wegen der Übersicht) nur
die nicht gesperrten Mitarbeiter zur Auswahl anbieten.
Wenn meine Query der Combobox SELECT MAID, MAName FROM
MATab;
lautet, hab’ ich dieses Problem ja gelöst.
Allerdings werden bereits bestehende Einträge von mittlerweile
gesperrten Mitarbeitern nun namenlos angezeigt.
Stattdessen sollte jedoch der Name des (gesperrten)
Mitarbeiters angezeigt werden.

Danke nochmal und Gruß
(Woly)