Neuigkeiten:

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

Mobiles Hauptmenü

Abhängige Kombifelder im Endlosformular

Begonnen von castor1, August 19, 2015, 15:46:09

⏪ vorheriges - nächstes ⏩

bahasu

Hi,

was soll den nach Änderung der Abteilung mit dem Eintrag des Mitarbeiters geschehen?

z.B. Soll der Eintrag verschwinden?
oder soll eine Zwangs-Eingabe erfolgen?

Harald
Servus

H_Stadler

Hallo,

Wenn der Mitarbeiter Eintrag verschwinden würde, wäre das klasse  ;)

LG
LG,
Hubert

bahasu

Hi,

kann es vorkommen, dass ein Mitarbeiter (z.B. Struppi) in mehren Abteilungen tätig ist?

Wenn nein, dann kann bei einer Änderung der Abteilung das Mitarbeiter-Feld leicht geleert werden.

Wenn ja, ist denkbar, dass der Eintrag beim Mitarbeiter nur gelöscht wird, wenn er nicht zur Abteilung passt.

Am Rande bemerkt: Vermeide Nachschlagefelder in Tabellen (z.B. AbteilungsIDRef in Tabelle tbl_Mitarbeiter). So etwas gehört in separate Abfragen im Formular.

Harald
Servus

H_Stadler

Hallo,

Nein sämtliche Mitarbeiter sind fest einer Abteilung zugewiesen. Struppi ist also tatsächlich in jedem Fall Der Abteilung PS zugewiesen.

Na klar da hätte ich auch drauf kommen können...  :D

OK ich werde auf deinen Hinweis mit den Nachschlagefeldern achten. Warum ist das wichtig?
LG,
Hubert

bahasu

Hi,
Zitat von: Der_Praktikant am September 02, 2015, 09:33:25
OK ich werde auf deinen Hinweis mit den Nachschlagefeldern achten. Warum ist das wichtig?

http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern

Harald
Servus

H_Stadler

Super! Vielen dank nochmal und schönen Tag  ;)
LG,
Hubert

bahasu

Hi,

wird die Abteilung geändert, wird der Eintrag beim Mitarbeiter gelöscht.
Beim Klick in einen anderen Datensatz erscheint eine Meldung, dass es keinen passenden Datensatz gibt. Lösbar ist das nur durch Eingabe eines neuen Mitarbeiters im geleerten Feld.

Zur Anregung:
In der Tabelle "tbl_FehlerFeststellung" ist das Feld "AbteilungsIDRef" überflüssig, da die Abteilung direkt am Mitarbeiter hängt und der Mitarbeiter nur einer Abteilung angehören kann.
Die Anzeige der Abteilung kann aus der Angabe zum Mitarbeiter erfolgen. Das habe ich nicht geändert.

Harald
Servus

H_Stadler

Optimal gelöst! Vielen Dank!!

Da hast du absolut Recht. Werde das in meiner Originalen DB berücksichtigen. Werde hier grade sämtlich Nachschlagefelder los und kümmere mich um entsprechende Abfragen, die das regeln  ;)
LG,
Hubert

H_Stadler

#23
Hallo!

Muss mich hier leider nochmal melden... Nachdem ich nun Nachschlagefelder losgeworden bin, noch ein Hauptmenü und Formulare zum hinzufügen von neuen Mitarbeitern etc. hinzugefügt habe, wollte ich Haralds Lösung in meiner originalen DB umsetzen. Habe dabei aber folgendes merkwürdiges Problem:

Wenn ich Daten eingebe klappt alles wie es soll. Die Mitarbeiter lassen sich der Abteilung entsprechend auswählen und es werden keine anderen Mitarbeiter zurückgesetzt. Wenn ich jetzt aber das Formular verlasse und neu öffne sind scheinbar willkürlich einige Mitarbeiter Kombifelder "optisch leer". Das soll heißen, dass die Werte in den Abfragen und Tabellen vorhanden sind, und erst nach einem Klick in eines der leeren Kombifelder werden die Mitarbeiter wieder sichtbar.

Ich hab 100mal kontrolliert, ob ich etwas vergessen habe zu übernehmen und habe das Unterformular "Fehlerdaten-Feststellung" und die dazugehörigen Abfragen komplett neu erstellt. Ohne Erfolg.

Hat jemand eine Idee woran das liegen könnte? Gibt es ein Problem mit der in Bezug auf den Fokus zum Mitarbeiter Kombifeld?

Hier nochmal der Code:
Option Compare Database
Option Explicit

Private Sub cbo_Abteilung_GotFocus()
    cbo_Mitarbeiter = vbEmpty
End Sub

Private Sub cbo_Mitarbeiter_GotFocus()
    Me.cbo_Mitarbeiter.Requery
    DoEvents
    Me.cbo_Mitarbeiter.RowSource = "SELECT tbl_Abteilung.AbteilungsID, tbl_Abteilung.Abteilung, tbl_Mitarbeiter.MitarbeiterID, tbl_Mitarbeiter.AbteilungsIDRef, tbl_Mitarbeiter.MitarbeiterName" & _
                                   " FROM tbl_Abteilung INNER JOIN tbl_Mitarbeiter ON tbl_Abteilung.AbteilungsID=tbl_Mitarbeiter.AbteilungsIDRef" & _
                                   " WHERE tbl_Abteilung.AbteilungsID=" & Me!cbo_Abteilung & ";"
End Sub

Private Sub cbo_Mitarbeiter_LostFocus()
    Me.cbo_Mitarbeiter.RowSource = "SELECT tbl_Abteilung.AbteilungsID, tbl_Abteilung.Abteilung, tbl_Mitarbeiter.MitarbeiterID, tbl_Mitarbeiter.AbteilungsIDRef, tbl_Mitarbeiter.MitarbeiterName" & _
                                   " FROM tbl_Abteilung INNER JOIN tbl_Mitarbeiter ON tbl_Abteilung.AbteilungsID=tbl_Mitarbeiter.AbteilungsIDRef"
End Sub

LG,
Hubert

bahasu

Hi,

kannst Du die Datenbank hochladen?

Ansonsten: Was steht bei "cbo_Mitarbeiter" im Reiter "Daten" bei der Eigenschaft "Datensatzherkunft"?
Dort sollte die gleiche Abfrage-Anweisung stehen wie bei dessen Ereignis "cbo_Mitarbeiter_LostFocus" (d.h. ohne begrenzende Bedingungen).

Harald
Servus

H_Stadler

Leider kann/darf ich die Datenbank nicht hochladen. Habe schon versucht das Problem in der Beispieldatenbank zu replizieren, aber einen (unbekannten) Fehler absichtlich zu machen kann schwerer sein als ich dachte...
Eine Ferndiagnose ist wahrscheinlich noch schwieriger - Sorry.

In der "Datensatzherkunft" von "cbo_Mitarbeiter" steht wie auch in der BeispielDB die "qry_FilterFehlerdatenFeststellung". Diese entspricht meines Verständnisses nach dem Code bei "LostFocus"
LG,
Hubert

H_Stadler

Bis auf die Tatsache, dass im Formular "sfm_Fehlerdaten" mehr Felder vorhanden sind, wie z.B. Fehlerart etc. finde ich auch keine Unterschiede zum Beispiel... Allerdings dürften mehr Felder in dem übergeordneten Formular das Fokusverhalten des UFOs ja eigentlich nicht beeinträchtigen oder!?
LG,
Hubert

bahasu

Hi

Zitat von: Der_Praktikant am September 02, 2015, 15:26:43
Eine Ferndiagnose ist wahrscheinlich noch schwieriger - Sorry.

In der Tat.
Deshalb mal spekuliert: Vielleicht hilft im Unterformular "sfm_FehlerdatenFeststellung" beim Ereignis "Beim Öffnen"

Private Sub Form_Open(Cancel As Integer)
    Me.cbo_Mitarbeiter.Requery
End Sub


Harald
Servus

H_Stadler

Hallo Harald,

Antworte jetzt von zu Hause aus, werde das also morgen erst im Büro ausprobieren können. Danke schonmal für den Tipp. Würde ja eigentlich Sinn machen, wenn ich so darüber nachdenke.

LG,
Johannes
LG,
Hubert

H_Stadler

Guten Morgen,

Die Requery hat wider Erwarten nicht geholfen...
Habe sehr wenig ähnliche Probleme über Google gefunden, aber in einem Beitrag auf Office-Lösungen hat jemand gemutmaßt, dass der Fehler mit Nachschlagefeldern zusammen hängt. Könnte mir vorstellen, dass die Tatsache Probleme bereitet, dass ich zunächst mit Nachschlagefeldern gearbeitet habe und die mittendrin rausgeworfen habe...
Baue das jetzt nochmal neu auf und melde mich mit Ergebnissen zurürck  ;)
LG,
Hubert