Hilfe,
seit zwei Tagen versuche ich, den in einem Kombifeld ausgewählten Mitarbeiter(Abfrage), in einem Unterformular alle seine Daten anzeigen zu lassen. Um diese dann bearbeiten zu können.
Ich hab viel im Forum gesucht, ich versteh es einfach nicht.
Ich habe meine Abfrage nach Bereich, daraus suche ich mir im Kombifeld, mittels Dropdown den Mitarbeiter aus, den ich bearbeiten möchte. Im Untermenü sollen alle seine Daten aus der tblMADaten erscheinen.
Das ist doch bestimmt eine ganz einfache Funktion.......
Könnte mir da jemand einen logischen Ansatz geben........ meinen hab ich nach reichlich Fehlermeldungen komplett verworfen
Danke
Hallo,
du könntest bspw. im kombifeld-Ereignis "Nach Aktualisierung" das Unterformular nach dem ausgewählten Mitarbeiter filtern.
Zeig doch einfach mal wie du es versucht hast, dann kann man dir sagen was daran falsch ist.
Fehlermeldungen sind eigentlich dazu da, einen auf die richtige Spur zu bringen. Zugegebenermaßen sind die Access-Meldungen nicht immer zielführend, aber das ist eher die Ausnahme.
Bei meinem Kombifeld-> Eigenschaften -> Nach Aktualisierung steht folgendes
Me!MitarbeiterID.RowSource = "SELECT MitarbeiterID FROM AbfrageBereich WHERE MitarbeiterID= " & Me!cboMitarbeiter
Ich musste gerade feststellen, dass es die Funktion RowSource gar nicht anzeigt.
Access 2007
Das Kombifeld liegt im Hauptformular und das Unterformular soll gefiltert werden?!
Das könnte dann so aussehen:If Not IsNull(Me!cboMitarbeiter) Then
Me!ufoControlName.Form.Filter = "MitarbeiterID=" & Me!cboMitarbeiter
Me!ufoControlName.Form.FilterOn = True
Else
Me!ufoControlName.Form.FilterOn = False
End If
wobei "ufoControlName" der Name des Unterformular-Steuerelements im Hauptformular ist.
ahhhhh
MaggieMay. Du wirst es kaum glauben. Ich habs ::)
Dank deiner Hilfe.
Vielen Vielen Dank
Ich hätte noch ein Frage zu einem ähnlichen Thema,
Wir haben ja folgende Lösung für mein erstes Problem
If Not IsNull(Me!cboMitarbeiter) Then
Me!ufoControlName.Form.Filter = "MitarbeiterID=" & Me!cboMitarbeiter
Me!ufoControlName.Form.FilterOn = True
Else
Me!ufoControlName.Form.FilterOn = False
End If
Und jetzt würde ich gerne in einem anderen Formular auch über Kombifeldauswahl (Polo, T-Shirt, Hose) eine Filterung starten.
Im Unterformular hab ich eine Abfrage abfrMAKleidung ähnlich / [Mitarbeiter] Polo [JA/Nein] t-Shirt [Ja/Nein] Und die Größen dazu. Diese sehe ich als Tabelle.
Ich brauch jetzt ne Abfrage, ähnlich oben, die nach Feldnamen Polo sucht, ob der Felddatentyp Ja oder Nein ist.
ähnlich
If cboKleidungsart = Polo
zeige alle Datensätz der abfrMAKleidung wo "Polo" = JA im ufomMAKleidung
End If
Schaut bei mir aktuell so aus:
If (Me!cboKleidungsart) = "Polo" Then
Me!ufomAbfragenMAKleidung.Form.Filter = "Polo=" & JA
Me!ufomAbfragenMAKleidung.Form.FilterOn = True
Else
Me!ufomAbfragenMAKleidung.Form.FilterOn = False
End If
Hier kommt die Fehlermeldung "Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Polo='
Hallo,
... ="Polo=true" & JA
Zitat von: MaggieMay am Oktober 21, 2014, 11:30:49
Das Kombifeld liegt im Hauptformular und das Unterformular soll gefiltert werden?!
Das könnte dann so aussehen:If Not IsNull(Me!cboMitarbeiter) Then
Me!ufoControlName.Form.Filter = "MitarbeiterID=" & Me!cboMitarbeiter
Me!ufoControlName.Form.FilterOn = True
Else
Me!ufoControlName.Form.FilterOn = False
End If
wobei "ufoControlName" der Name des Unterformular-Steuerelements im Hauptformular ist.
Ich werd verrückt :-\
Was sagt mir die Fehlermeldung "Die Methode 'Form' für das Objekt '_SubForm ist fehlgeschlagen?
Ich hab ein Formular da funktioniert es wunderbar, im zweiten funktionierte es gerstern auch, heut nicht mehr :(
Hi,
überprüfe doch mal, ob du den Namen des Unterformular-Steuerelements korrekt angegeben hast.
Zitat von: DF6GL am Oktober 23, 2014, 09:26:48
Hallo,
... ="Polo=true" & JA
Danke, das funktioniert schon mal.
In meiner cboKleidungsart kann ich mehrere Kleidungsarten auswählen.
Wenn ich nun bei "NachAktualisieren" meine IfThenElse für POLO, T_Shirt, Latzhose, Bundhose usw erstelle, klappt die Filterung nicht mehr. Wenn ich nur eine IfThenElse hab, klappt es.
Woran leigt das, muss ich noch was aktualisieren?
Zeig doch bitte den Code dazu, sonst ist die Lösungssuche wie ein Fischen im Trüben. ???
BTW: ... ="Polo=true"
Ein derartiges Kriterium lässt auf ein falsches Datenmodell schließen.
Was machst du, wenn ein neues Kleidungsstück hinzukommt?!
@MaggieMay
Habs nun gefunden. Ich muss irgendwie die Datensatzherkunft geändert haben.
Jetzt gehts wieder.
Ich hab den halben Tag damit verbracht, den Fehler zu finden.
Aller Anfang ist schwer
Danke
Hab den Code gestern schon mal hier aufgezeigt, mach ich gerne nochmal.
Private Sub cboKleidungsart_AfterUpdate()
If Me!cboKleidungsart = "Polo" Then
Me!ufomAbfragenMAKleidung.Form.Filter = "Polo=True"
Me!ufomAbfragenMAKleidung.Form.FilterOn = True
Else
Me!ufomAbfragenMAKleidung.Form.FilterOn = False
End If
If Me!cboKleidungsart = "T_Shirt" Then
Me!ufomAbfragenMAKleidung.Form.Filter = "T_Shirt=True"
Me!ufomAbfragenMAKleidung.Form.FilterOn = True
Else
Me!ufomAbfragenMAKleidung.Form.FilterOn = False
End If[/i]
End Sub
Ich geb Dir Recht, es ist sehr unflexibel. Aber bei uns wird es nur eine "erlesene" Auswahl an Kleidungsstücken geben.
Habs auch nochmal getestet, eine If funktionert, mit der zweiten nicht mehr.
Nein, diese Version des Codes hattest du noch nicht gezeigt.
So sollte es klappen:Private Sub cboKleidungsart_AfterUpdate()
If Me!cboKleidungsart = "Polo" Then
Me!ufomAbfragenMAKleidung.Form.Filter = "Polo=True"
Me!ufomAbfragenMAKleidung.Form.FilterOn = True
ElseIf Me!cboKleidungsart = "T_Shirt" Then
Me!ufomAbfragenMAKleidung.Form.Filter = "T_Shirt=True"
Me!ufomAbfragenMAKleidung.Form.FilterOn = True
Else
Me!ufomAbfragenMAKleidung.Form.FilterOn = False
End If
End Sub
Programmierung hat halt sehr viel mit Logik zu tun... ;-)
Alternative:
Private Sub cboKleidungsart_AfterUpdate()
If Not IsNull(Me!cboKleidungsart) Then
Me!ufomAbfragenMAKleidung.Form.Filter = Me!cboKleidungsart & "=True"
Me!ufomAbfragenMAKleidung.Form.FilterOn = True
Else
Me!ufomAbfragenMAKleidung.Form.FilterOn = False
End If
End Sub
Ja, die Logik fehlt mir leider noch :-\
Ich habs ausprobiert ;) Verkürzt die Syntax um ein paar Zeilen.
Ich hab ja jetzt meine Filterung. Aber ich sehe noch immer alle Felder meiner abrMAKleidung im ufomAbfragenMAKleidung.
mit Me!ufomAbfragenMAKleidung!Polo.form.visible = flase klappt es nicht.
In der Abfrage selbst kann man ja den Hacken bei "Anzeigen" nutzen.
Kann ich diese Funktion auch aus deiner If Anweisung raus anwählen?
ungefähr so
Alles nicht Anzeigen was nicht "*cboKleidungsart*", außer MAID,MAVorname,MANachname
Vielleicht 7 oder 8 vielleicht auch mehr, ich weiß es nicht.
Alternativ kannst du auch noch Select Case einsetzen.
Am einfachsten wäre es jedoch mit der zweiten von mir gezeigten Variante.
Me!ufomAbfragenMAKleidung.Form.invisible = IsNot("*Me!cboKleidungsart*")
Auch das war ein kläglicher Versuch.
("*Me!cboKleidungsart*") soll bedeuten, alle Felder die cboKleidungsart enthalten
Polo yx
Polo XY
Größe Polo
Hallo,
ich befürchte, so kommst Du nie zum Ziel....
Wenn Du Dein Konzept und die Tabellenkonstruktion nicht dramatisch änderst, soll heißen, die Datenzusammenhänge zunächst analysierst, zusammengehörende Daten normalisierst (das ist essentiell!) , in Beziehung setzt und in Tabellen abbildest, wird das Ganze nur Flickwerk sein.
:'(
Zudem solltest Du Dich in die Grundlagen einer relationalen DB, von Access und ein bisschen in VBA-Programmierung einlesen.
Sorry, aber ich denke, ohne dies kommst Du nicht weiter..
Zitatmit Me!ufomAbfragenMAKleidung!Polo.form.visible = flase klappt es nicht.
Der Ausdruck ist ja auch falsch eingegeben, so könnte es schon eher klappen:
Me!ufomAbfragenMAKleidung.Form!Polo.Visible = False
BTW:
Code bitte immer kopieren und nicht freihändig eintippen!
Nachtrag:
ZitatAlles nicht Anzeigen was nicht "*cboKleidungsart*", außer MAID,MAVorname,MANachname
Das ließe sich mit folgendem Code im Formularereignis "Beim Anzeigen" des Ufo umsetzen:
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Controltype = acCheckBox Then
ctl.Visible = (ctl.Name LIKE "*" & Me.Parent.cboKleidungsart & "*")
End If
Next
Ich gehe mal davon aus, dass es sich um Steuerelemente vom Typ CheckBox handelt, andernfalls müssen weitere Steuerelementtypen berücksichtigt werden.
Guten Morgen,
Es handelt sich um ein Kombifeld, in dem ich über dropdown auswähle.
Ich hab nur Ereignis Beim Hingehen und Beim Verlassen
Hallo,
Zitat von: aga am Oktober 24, 2014, 07:56:09Es handelt sich um ein Kombifeld
ich fragte aber doch nach den Steuerelementen, die du abhängig von der Auswahl im Kombifeld ein-/ausblenden willst.