Liebe Leute,
ich habe in einem UFo, das als Endlosformular dargestellt wird, zwei abhängige Kombifelder ("cboOrgAuftraggeber" und von dessen Auswahl abhängig das Kombi "cboAbtAuftraggeber"). Nach der ersten Auswahl beider Kombis erscheinen - wie im Endlosformular üblich - beide Kombis unterhalb nochmal, wo ein weiterer Datensatz ausgewählt werden kann.
Sobald ich nun eine weitere Auswahl in "cboOrgAuftraggeber" treffe, verschwidet die Auswahl des "cboAbtAuftraggeber" im ersten Datensatz (oberes Kombifeld).
Kann ich das verhindern? Es sollte also im zweiten Datensatz eine vom ersten Datensatz unabhängige Auswahl getroffen werden können.
Im Eigenschaftenblatt des "cboOrgAuftraggeber" habe ich als Datensatzherkunft folgenden Code eingefügt:SELECT [tbl_AGOrganisation].[ID_AGOrganisation], [tbl_AGOrganisation].[txt_Name] FROM tbl_AGOrganisation ORDER BY [txt_Name];
Im Eigenschaftenblatt des "cboAbtAuftraggeber" habe ich als Datensatzherkunft folgenden Code eingefügt:SELECT [tbl_AGAbteilung].[ID_AGAbteilung], [tbl_AGAbteilung].[txt_Name] FROM tbl_AGAbteilung WHERE [ID_AGOrganisation]=[cboOrgAuftraggeber] ORDER BY [txt_Name];
Als Ereignis "nach Aktualisierung" von "cboOrgAuftraggeber" habe ich folgenden Code eingefügt:Private Sub cboOrgAuftraggeber_AfterUpdate()
cboAbtAuftraggeber.Requery
End Sub
Danke für eure Hilfe!
Castor
Hallo,
das ist normales Verhalten abhängiger Kombis im Endlosformular und lässt sich nur mit Aufwand umgehen. Du musst das Kombi mit einem Textfeld überlagern, das seinen Inhalt über eine Abfrage bezieht.
Danke für den Tipp. Nachdem mein Access-Know-how bemitleidenswert überschaubar ist wäre ich für "technische" Details zu diesem Lösungsvorschlag überaus dankbar, sofern jemand die Muse dazu findet.
LG Castor
Kann mir jemand dabei helfen, den Vorschlag von Klaus umzusetzen? Mit ein paar detailierteren Anweisungen?
Danke im Vorhinein!
Niemand der hier weiter weiß? Ich richte die Bitte nochmals an alle Access-ExpertInnen.
LG Castor
Hallo Castor,
Habe fast exakt das gleiche Problem...
Wie man den Trick mit den unsichtbaren Textfeldern umsetzen kann weiß ich leider nicht. Ich habe das Problem versucht zu lösen, indem ich mein UFO nicht als Endlosformular sondern als Einzelnes Formular habe anzeigen lassen. Dadurch habe ich gehofft durch Klick im Hauptformular den entsprechenden Datensatz im UFO auswählen zu können und keine Probleme mit den abhängigen Kombifeldern zu haben... Das Problem besteht leider weiterhin... Wähle ich bei Datensatz1 eine Abteilung + Mitarbeiter aus und gehe zu DS2 wird der Mitarbeiter von DS1 zurückgesetzt.
Hoffe also auch auf Tipps wie das mit den unsichtbaren Textfeldern zu lösen ist...
Hallo alle,
Mir (und Castor eventuell auch) wachsen langsam graue Haare über das Problem... Eine grobe Ahnung habe ich aufgrund der Tipps von Klaus mittlerweile, aber wie das umzusetzen ist verstehe ich einfach nicht. Auch Google hilft mir nicht wirklich weiter. Im alten Office-Lösungen Forum gibt es einige Beispieldatenbanken die zeigen wie sowas geht, aber das alte Forum ist ja leider seid längerem im Wartungszustand und ich kann nicht an diese Beispiele kommen.
Kann mir/uns jemand helfen und ein kurzes Beispiel geben wie das Problem mit Hilfe eines Textfeldes zu lösen ist?
LG
Hallo,
erstelle eine Beispieldb mit relevanten Tabellen und Formularen. Damit man das nicht nachbauen muss. Dann zeige ich Dir wie es geht.
Achtung: Ich benötige das Beispeil als MDB (Access2003 Version) sonst kann ich nicht helfen. Ich habe nur Access2003.
Hallo Klaus!
Schicke dir die BeispielDB im Laufe des Abends.
Im Voraus schon mal besten Dank für deine Mühen! Bin dir sehr dankbar!
LG,
Johannes
Oh Mann da ist wohl was beim Upload schief gegangen gestern Abend.
Lade die MDB jetzt erneut hoch. Ich hoffe die Datei funktioniert komplett.
Nochmal als Zusammenfassung:
Es geht um die beiden beige hinterlegten Felder "Abteilung" und "Mitarbeiter". Wählt man hier eine andere Abteilung für FehlerID 2 als für 1 festgelegt wurde wird der Mitarbeiter für FehlerID 1 automatisch zurückgesetzt.
Hi,
ich hab's mal für dich umgesetzt, ist einfacher als du denkst.
Hey Maggie!
VIELEN lieben Dank! :) Das rettet mir die Woche ;D
Du hast recht es ist tatsächlich einfacher als ich dachte. So ähnlich habe ich das sogar versucht, aber ich kam einfach nicht auf die Idee zusätzlich zur MitarbeiterID(Die dann nachgeschlagen wird) den Mitarbeiternamen einzubringen...
Na da hab ich wieder was wichtiges gelernt! Danke auch an alle die mitgedacht haben ;)
Naja, das überlagernde Textfeld muss schließlich einen vorzeigbaren Inhalt haben. ;-)
Hi,
vielleicht ist das folgende im Anhang auch noch einsetzbar:
- Kommt ohne ein Hilfsfeld aus.
- Es werden zwei Ereignisse zum Setzen der RowSource verwendet.
- Ohne DoEvents-Befehl geht es nicht.
Harald
Hallo Harald,
Danke für deine Lösung! Finde ich auch sehr gut ;D Allerdings gibt es hier noch einen kleinen Schönheitsfehler. Wenn man nämlich nach getroffener Auswahl die Abteilung eines DS ändert und der Mitarbeiter nicht mehr zu dieser Abteilung passt, bleibt dieser trotzdem im DS stehen... Gibt es da noch eine Möglichkeit das auszubügeln?
Johannes
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
Hallo,
Wenn der Mitarbeiter Eintrag verschwinden würde, wäre das klasse ;)
LG
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
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?
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
Super! Vielen dank nochmal und schönen Tag ;)
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
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 ;)
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
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
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"
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!?
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 SubHarald
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
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 ;)
Schade... Wäre wohl zu einfach gewesen...
Die Idee das die Nachschlagefelder Grund allen Übels sind kann ich leider verwerfen.
Habe eine neue Datenbank angefangen und Haralds Vorgehensweise in einem anderen Unterformular als der Fehler-Feststellung ausprobiert. Hier habe ich jetzt sogar das Problem, dass während der Dateneingabe der Mitarbeiter vorheriger Datensätze verschwindet, bei Klick in das jeweilige Feld aber wieder angezeigt werden.
Ich versuche diese DB jetzt mal zu anonymisieren und hochzuladen.
So hier jetzt das Beispiel! Es wird recht schnell klar worum es geht. Bei Servicemonteur werden die Mitarbeiter scheinbar willkürlich ausgeblendet...
Danke im Vorraus für Hilfe!
Hallo,
die werden deswegen "ausgeblendet", weil der Ma nicht in der vorgegebenen (aus dem angeklickten DS) Abteilung zu finden ist..
Kriterium in der Kombifeld-Abfrage:
[Forms]![frm_Maengelliste]![sfm_Pruefdaten]![sfm_ServicemonteurVP]![cbo_AbteilungsIDRef]
Insofern ist zu überprüfen, ob die Daten-Beziehungen überhaupt der Realität entsprechen.
Hallo Franz,
Das verstehe ich nicht ganz. Wenn ich beispielsweise in dem Datensatz mit der Abteilung "Prüffeld PS" steh wird 'Tim' weiterhin in dem DS darüber angezeigt, obwohl er nicht dem "Prüffeld PS" zugewiesen ist... Wie gesagt kommt es mir beinahe willkürlich vor wann welche DS angezeigt werden.
Außerdem ist das ja genau so umgesetzt wie im letzten Upload von bahasu, wo das Problem dann ja auch bestehen müsste, oder!?
Hi,
mAn kann das nicht funktionieren, wenn das Kombifeld abhängig von der Abteilung des aktuellen Datensatzes ist.
Den geschilderten Effekt, dass einige Mitarbeiternamen dennoch stehen bleiben, kann ich allerdings auch nicht erklären.
Es sei denn, die Mitarbeiter sind mehreren Abteilungen zugeordnet...
Nachtrag:
Warum gibt es sowohl bei den Prüfdaten als auch bei den Servicemonteuren und den Mitarbeitern die Zuordnung zur Abteilung? Sollte letzteres nicht genügen?
Hi,
Es ist tatsächlich so, dass niemals ein Mitarbeiter mehreren Abteilungen zugeordnet sein darf.
Hmm schade. Ich finde auch wahnsinnig wenig zu diesem Thema über Google. Habe immer noch den Verdacht, dass da eventuell noch etwas bei der "LostFocus" Prozedur ergänzt werden müsste, wüsste aber nicht was.
Wie gesagt: es kann so (nur mit dem abh. Kombi und ohne Hilfsfeld) einfach nicht funktionieren.
Die Antwort auf meinen Nachtrag oben würde mich aber dennoch interessieren.
Dann muss ich wohl knobeln wie ich das anders umsetzen kann :-\
Zum Nachtrag (Hoffe ich habe die Frage richtig verstanden):
Leider ist es so, dass an einem Mangel/Fehler an bis zu 7 verschiedenen Prozessen Mitarbeiter gebraucht werden. Einerseits "Wer gibt hier die Daten ein?" -> Sachbearbeiter bei Prüfdaten; Dann "Welcher Servicemonteur ist war in der Vor-Prüfung, welcher in der Hauptprüfung etc...?" Deshalb die vielen Zuordnungen zur Abteilung.
Ok, aber ich hatte dir doch das Beispiel mit dem überlagernden Textfeld hochgeladen, damit sollte das doch machbar sein.
Gott sei Dank hast du absolut Recht! Mit dem überlagernden Textfeld funktioniert es einwandfrei ;D
Hi,
jetzt hab ich dieses Beispiel von Maggie mal nachgebaut auf meine DB leider ist diese nicht genau gleich strukturiert und deshalb habe ich noch einige Probleme die Daten zu aktualisieren.
Hier ist was ich gemacht habe.
In Hinblick auf Maggies Beispiel DB
frmObjekt ="frm_Mängelliste"
sfm_ObjektTyp= "sfm_Fehlerdaten"
subfrmObjAust="sfm_FehlerdatenFeststellung"
Hauptformular = frmObjekt
Im Hauptformular habe ich "sfm_ObjTyp" eingefügt und verknüpft mit Obj_id im Hauptformular.. das funktioniert auch. Auf dem formular sfm_ObjTyp befindet sich aber keine Abhängigen Komboboxen sondern diese befinden sich in einen weiiteren Unterformular im Hauptformular "sfm_Einrichtungen"
sfm_Einrichtungen ist folgendermaßen verknüpft
Verknüpfen nach [sfm_ObjTyp]![subfrmObjAust]![ObjArtAust_id]
Verknüpfen von ObjArtAust_id_f
Hoffe das stimmt so???
In diesem formular befinden sich nun zwei Abhängige Kombiboxen die cboMatKategorie und cboMaterial heissen und eben auf tblMatKategorie oder auf tblMaterial sich beziehen.
tblEinrichtung hat nun eine Verknüpfung mit Mat_id mit Mat_id_f und hier möchte ich wenn die MaterialKategorie und das Material ausgewählt wird beides im sfm_Einrichtungen das der Mat_id_f eben diese Auswahl vornimmt.
Leider hab ich hier noch meine Schwierigkeiten und es funktioniert nicht.
Habe ein txtFeld über das cboMaterial eingefügt und auch mit der gotfokus probiert aber wie gesagt noch einige Probleme!!
Hoffe das mir jemand einen Tipp geben könnte.
Vielen Dank
Lg
Albert
noch ein kleiner Nachtrag zu meiner Frage,
in sfmEinrichtungen habe ich diese beiden Codes eingetragen
Private Sub cboMatKategorie_AfterUpdate()
Me!cboMatKategorie.Requery
Me!cboMaterial.Requery
End Sub
und für das textfeld
Private Sub txtMaterial_Enter()
Me.cboMaterial.SetFocus
End Sub
leider funktioniert bei mir der Eintrag in die sfmEinrichtungen nicht. Access teilt mir mit das es den Mat_id_f nicht findet also den Fremdschlüssel zu der tabelle.
Ist natürlich verlinkt aber es funktioniert nicht ausserdem werden nach der Auswahl cboMatKategorie die cboMaterial nicht richtig angezeigt.
Werde noch weiter probieren aber ich denke das wird nichts das begreife ich leider noch nicht ganz...
Lg
Albert
Sorry, aber das muss ich sehen, aus deiner Beschreibung werde ich nicht schlau.
Hi,
danke für Die Nachricht!
Brauchst Du die DB?? Im Anhang mal die Struktur um die es sich handeln würde.
Wenn Du die DB brauchst oder ansehen möchtest welches Format würdest Du brauchen? Ich verwende 2010 aber hab mal die Struktur auf 2003 gespeichert aber noch keine formulare dort enthalten die müsste ich erst in die neue DB einfügen.
Mfg
Albert
Ja, so meinte ich das, da müsste ich schon direkt in die DB schauen können, das kann auch gerne A2010 sein. Du musst dann nur das Formular nennen, um das es geht.
Hallo,
ok hier sollte hoffentlich alles vorhanden sein und es geht um die subfrmEinrichtung.
Hoffe das es so verständlich ist :)
Lg
Und vielen Dank für die Mühe!!!!
Albert
Sorry, aber so ganz ohne Testdaten, d.h. mit leeren Tabellen, kann man damit nicht allzuviel anfangen.
Schließlich geht es doch zunächst einmal darum, den aktuellen Stand und seine Wirkungsweise auszutesten, um die Probleme damit erkennen und lösen zu können.
Hallo Maggie,
ok tut mir leid! Hab nun die neue DB im Anhang.
Vielen Dank
Lg
Albert
Hallo,
also ich habe nun seit gesten x verschiedene Dinge probiert aber ich raff es einfach nicht!! :'(
Einmal wird das UFO nicht aktualisiert dann wieder die zweite combobox und so weiter...
Ist ganz schön schwierig dieses Thema finde ich für jemanden der es nicht so oft gemacht hat.
Geht es eigentlich mit VBA nicht vielleicht etwas einfacher??
Schönes WE an alle Access Gurus :)
Albert
Hallo Albert,
vielleicht hast du es inzwischen schon selbst bemerkt, in besagtem Unterformular gibt es einige Fehler. In der Abfrage sind die Tabellen "tblMaterial" und "tblEinrichtung" falsch verknüpft und das Kriterium verweist auf ein nicht vorhandenes Kombifeld in "subfrmObjAust".
Hallo Maggie,
nein ich hab ganz ehrlich gesagt keine weitere Zeit mehr momentan in dieses Formular investiert nach 3 Tagen musste ich mich doch mal um was anderes kümmern :)
aber ich werde es wieder ansehen wenn ich etwas mehr Zeit habe und dann hoffentlich auf diese Fehler stoßen und ändern.
Ich habe versucht die sfm_anders zu platzieren .. na ja auch noch das selbe Problem.-... ich schau es mir gern an :)
Danke auf alle Fälle mal für Deinen input und Deine Zeit!!
Hilft immer sehr!
LG
Guten Morgen Maggie,
habe es nochmal angesehen leider bin ich mir nicht ganz sicher welche Fehler Du meinst...
Also das hab ich mal geändert... in der Abfrage qryMatEinrichtung habe ich den Verknüpfungstyp zwischen tblMaterial und tblEinrichtung auf die 1 Option umgestellt. War das was Du gemeint hast?
Und in der selben Abfrage habe ich als Kriterium [Forms]![frmObjekt]![sfm_ObjTyp]![subfrmObjAust]![cboMatKategorie]
das cboMatKategorie gibt es ja im subfrmObjAust...
Oder kannst Du mir bitte etwas detailierter schreiben welche Abfrage du meinst?
Würde es gern mal hinbekommen dann könnte ich wieder weiter machen :)
Lg
Albert
Hi,
Zitatdas cboMatKategorie gibt es ja im subfrmObjAust
in meiner Version der DB (dein Upload vom 11.9.) gibt es das nicht, ich wüsste auch nicht was ein "cboMatKategorie" im "subfrmObjAust" zu suchen hätte.