Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Auswahl im Kombifeld, Anzeige aller Daten im Unterformular

Begonnen von aga, Oktober 21, 2014, 08:58:27

⏪ vorheriges - nächstes ⏩

aga

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

aga

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

aga

ahhhhh

MaggieMay. Du wirst es kaum glauben. Ich habs     ::)

Dank deiner Hilfe.

Vielen Vielen Dank

aga

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='


aga

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  :(

MaggieMay

Hi,

überprüfe doch mal, ob du den Namen des Unterformular-Steuerelements korrekt angegeben hast.
Freundliche Grüße
MaggieMay

aga

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?

MaggieMay

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?!
Freundliche Grüße
MaggieMay

aga

@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

aga

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.

MaggieMay

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
Freundliche Grüße
MaggieMay

aga

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