Neuigkeiten:

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

Mobiles Hauptmenü

Formular für Eingabe / Darstellung inaktiver Datensätze

Begonnen von Micharius, Februar 12, 2018, 07:49:28

⏪ vorheriges - nächstes ⏩

Micharius

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

DF6GL

#1
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

Beaker s.a.

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
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)

Micharius

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

Jonny

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

Beaker s.a.

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
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)

Micharius

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

Beaker s.a.

Jau, die "" hatte ich unterschlagen, - Asche auf mein Haupt  ;)
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)