Guten Tag miteinander
In meiner DB gibt es ein Formular Projekte, wo die entsprechende Tabelle tblProjekte mit Daten befüllt wird. Unter anderem können über ein Unterformular & Zuweisungstabelle Mitarbeiter mit verschiedenen Rollen (Sales, Projektverantwortlicher etc) zugeordnet werden. So weit so gut, das funktioniert alles bestens. Nun gibt es natürlich die Situation, dass ein Mitarbeiter die Firma verlässt. In diesem Fall setze ich ihn in der Tabelle tblMitartbeiter mit einem JA/NEIN Feld inaktiv.
Für die Erfassung eines neuen Projekts soll der betreffende Mitarbeiter dann nicht mehr zur Verfügung stehen, in bestehenden Projekten möchte ich aber natürlich noch sehen, dass der Mitarbeiter zum Zeitpunkt der Erfassung dem Projekt zugeteilt war. Ich frage mich jetzt, wie ich das am besten löse, den die Eingabe bzw. Darstellung der Projekte erfolgt über das gleiche Formular. Ich hätte das nun so gelöst, dass mit einem Popup Formular die Zuordnung der Mitarbeiter erfolgt (es werde nur aktive angezeigt und ausgewählt), und im Hauptformular dann auch bereits ausgetretene Mitarbeiter angezeigt werden.
Vielleicht gibt es aber eine elegantere Lösung? Über eine Beurteilung oder Inputs würde ich mich sehr freuen.
Beste Grüsse & guten Wochenstart,
Micharius
Hallo,
--sperre das gebundene Kombifeld ("MAID") . Datensatzherkunft: Select MAID, MA_Nachname from tblMitarbeiter
--erzeuge ein neues ungebundenes Kombifeld ("cmbMA"), lege es über das vorhandene und verschmälere es bis auf den Pfeil-Button. Stelle es weiterhin auf "Vordergrund".
--Datenherkunft von "cmbMA": Select MAID, MA_Nachname from tblMitarbeiter Where Ma_aktiv <> 0
--Ereignisprozedur "Nach Aktualisierung":
Sub cmbMA_AfterUpdate()
Me!MAID= Me!cmbMA
End Sub
PS: evtl. zusätzlich erforderlich:
Sub cmbMA_Enter()
Me!cmbMA.Requery
End Sub
Hallo Micharius,
Oder du manipulierst die RowSource des Kombis beim Formereignis "Beim Anzeigen".
If Me.NewRecord then
Me.cbmMA.RowSource = Select MAID, MA_Nachname from tblMitarbeiter Where Ma_aktiv
Else
Me.cbmMA.RowSource = Select MAID, MA_Nachname from tblMitarbeiter
End If
gruss ekkehard
Hallo Beaker s.a. und DF6GL
Vielen Dank für die Tipps - das probiere ich gerne aus!
@Beaker s.a. - dann muss ich wohl das neue Kombifeld, welches über dem "alten " liegt, transparent machen, damit der ursprüngliche Eintrag "durchscheint"?
Viele Grüsse
Micharius
Hallo
für die Lösung von Beaker brauchst du kein neues Feld. Der Ansatz ist das nur bei einen neuen DS der MA ausgewählt werden kann. Bei bestehende DS werden diese nur angezeigt.
Gruß Johann
Hallo Johann,
Fast ;) - ein zweites Kombi braucht es in der Tat nicht, das "nichtauswählenkönnen" müsste man ergänzen
End If
Me.cbmMA.Locked = Not Me.NewRecord
gruss ekkehard
Ist ein Weilchen her, und ich hab das immer vor mich hergeschoben. Ich habe es mit der Lösung von Ekkehard nun umgesetzt.
Für die Nachweilt ein einziges Addendum zu seinem Code: Die SQL Anweisung muss in "Anführungszeichen" stehen, allfällige "" aus der (in meinem Fall kopierten SQL Anweisung) durch ' ersetzt werden.
Grüsse
Micharius
Jau, die "" hatte ich unterschlagen, - Asche auf mein Haupt ;)