Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: MP2109 am November 23, 2018, 16:02:36

Titel: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 23, 2018, 16:02:36
Hallo,

ich würde gerne meine qry nach ausgewählten daten im Listenfeld filtern. Mit Kombinationsfeldern krieg ich es hin, doch möchte ich nach mehreren Elementen Filtern.
z.B. zeige mir Mitarbeiter 1,2 und 4 und nicht alle 6.

würde mich über eine Antwort freuen.
Grüße
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 23, 2018, 16:53:10
 siehe unten
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Lachtaube am November 23, 2018, 17:42:59
'Die Mühe, Steuerelemente ordentlich zu taufen, sollte man sich schon geben. :)
Private Sub Befehl53_Click()
   Dim Item    As Variant
   Dim Items() As String
   Dim cnt     As Long
   Dim i       As Long

   With Me.filterMitarbeiter
      cnt = .ItemsSelected.Count
      If cnt = 0 Then Exit Sub        'Es gibt keine Arbeit

      ReDim Items(cnt - 1)
      For Each Item In .ItemsSelected
         Items(i) = .ItemData(Item)   'das wären die Werte der gebundenen Spalte
         i = i + 1
      Next
   End With

   Me.Filter = "MitarbeiterID In (" & Join(Items, ",") & ")"
   'oder für einen Text
   'Me.Filter = "MitarbeiterID In ('" & Join(Items, "','") & "')"
   Me.FilterOn = True
End Sub
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Beaker s.a. am November 23, 2018, 17:53:56
Hallo,
Zunächst mal ist nicht klar, was du mit der "Auswahl" machen willst; -
das Formular filtern oder ...
Zum Filtern muss der String anders aufgebaut werden
Private Sub Befehl53_Click()

    Dim vItem As Variant
    Dim sAuswahl As String

    Auswahl = ""

    With Me!filterMitarbeiter

        If .ItemsSelected.Count > 0 Then

           For Each vItem In .ItemsSelected
                 sAuswahl = sAuswahl & .ItemData(vItem) & ","
            Next i
            'letztes Komma weg
            sAuswahl = Mid(sAuswahl, 1, Len(sAuswahl) - 1)

            Me.Filter = "MitarbeiterID IN (" & sAuswahl & ")"
            Me.FilterOn = True
        End If
    End With

End Sub


gruss ekkehard


uuups, zu langsam
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 29, 2018, 10:15:53
Hallööle
hatte die Tage nicht viel Zeit weiter zu machen.  Vielen Dank erst mal für die Antworten.

Diese funktionieren bei mir auch im Endlosformular mit mehreren Elementen. Doch habe ich vergessen zu sagen, dass ich eine Abfrage filtern möchte und dies kriege ich nicht gefiltert. bzw. das Unterformular(daten der Abfrage9.

Private Sub filterAnwenden_Click()
  Dim i As Variant
  Dim Auswahl As String
    Auswahl = "1"
    For Each i In Me!filterMitarbeiter.ItemsSelected
        If IsNull(Auswahl) Then
            Auswahl = Me!filterMitarbeiter.Column(0, i)
         Else
            Auswahl = Auswahl & " Oder Wie " & Me!filterMitarbeiter.Column(0, i)
        End If
    Next i
    Me!filterMitarbeiter = Auswahl
    Me!UnterFormular.Requery
End Sub

Ich habe bei Kriterium Wie "*" & [Formulare]![Sollstunden]![filterMitarbeiter] & "*" Bei meiner Abfrage in der Spalte MitarbeiterID.

Rein theoretisch(auch wenn es nicht illlegant gelöst ist, und ich weiß dass er immer 1 mit reinnimmt) müsste es jetzt nicht funktionieren?

Habe mich erst seid ein paar Tagen mit Vba befasst würde mich über weitere Hilfe freuen!
Falls Ihr noch Fragen habt antworte ich gerne.

Grüße

Überflüssige Leerzeilen im Code entfernt. Codetags angewendet. Bitte zukünftig selbst machen. Klaus (MzKlMu)
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Beaker s.a. am November 29, 2018, 12:54:19
@MP2109
1. VBA und SQL sprechen nur englisch, also
"... Oder Wie ..." = "... Or LIKE ..."
2. soll ja in "Auswahl" bzw. in "Me!filterMitarbeiter" sowas wie "1, 2, 4"
drinstehen. Das geht nicht, - einem Listenfeld kannst du keinen String als
Inhalt geben. Du brauchst also ein Feld (ungebunden) in dem du den
String festhältst. Habe ich jetzt mal "txtMAIDs" genannt.
3. für eine Abfrage muss da allerdings "(1, 2, 4)" drinstehen, und dann
lautet das Kriterium "... WHERE MitarbeiterID IN " & Forms!Sollstunden!txtMAIDs & "..."
"Sollstunden" ist dabei allerdings ein HFo. Befindet sich das Feld auf einem
UFo lautet der Bezug
Forms!NameHFo!NameUFoControl.Form!txtMAIDs

Mein Code würde dann so aussehen

Private Sub Befehl53_Click()

    Dim vItem As Variant
    Dim sAuswahl As String

    Auswahl = "("

    With Me!filterMitarbeiter

        If .ItemsSelected.Count > 0 Then

           For Each vItem In .ItemsSelected
                 sAuswahl = sAuswahl & .ItemData(vItem) & ","
            Next i
            'letztes Komma weg
            sAuswahl = Mid(sAuswahl, 1, Len(sAuswahl) - 1)
            'Klammer hinten dran
            sAuswahl = sAuswahl & ")"

            Me!txtMAIDs = sAuswahl
        End If
    End With

End Sub


Und, falls du es noch nicht kennst, suche mal in der OH nach "Debug.Print".
Das hilft beim Zusammensetzen von Strings in VBA ungemein.
Ein nettes, kleines Tool (Add-In) das diese Methode für Abfragen und
Kriterien noch ein wenig erweitert, findest du hier
http://access-codelib.net/download/addins/SqlDebugPrint.zip (http://access-codelib.net/download/addins/SqlDebugPrint.zip)

gruss ekkehard
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 29, 2018, 14:05:43
Vielen Dank @Beaker s.a
ich verstehe den Code(habe i durch vItem und Auswahl durch sAuswahl ersetzt) und das debug.Print war auch wirklich goodtoknow, aber würde er nicht bei deinem Code als Kriterium schreiben (1,2,4) ? Das ist doch kein gültiges Kriterium.  Das Kriterium müsste doch in der Form vonWie 1 Oder Wie 2 Oder Wie 4 sein oder nicht?
Habe es dann mit Private Sub Befehl53_Click()

    Dim vItem As Variant
    Dim sAuswahl As String

sAuswahl = ""

    With Me!filterMitarbeiter

        If .ItemsSelected.Count > 0 Then

           For Each vItem In .ItemsSelected
                 sAuswahl = sAuswahl & .ItemData(vItem) & " oder wie "
            Next vItem
            'oder wie
            sAuswahl = Mid(sAuswahl, 1, Len(sAuswahl) - 9)
           

            Me!txtMAIDs = sAuswahl
            Me!UnterFormular.Requery
        End If
    End With

End Sub
versucht, doch leider nicht erfolgreich.


Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Beaker s.a. am November 29, 2018, 15:11:29
@Mp2109
Zitataber würde er nicht bei deinem Code als Kriterium schreiben (1,2,4) ?
Ja.
ZitatDas ist doch kein gültiges Kriterium
Für eine IN-Klausel schon. Wobei IN dein vermutetes Kriterium so zu
sagen abkürzt, das aber so aussehen müsste
... WHERE MitarbeiterID = 1 OR MitarbeiterID = 2 OR MitarbeiterID = 4 ...

gruss ekkehard
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 29, 2018, 16:03:06
@Beaker s.a. Achso okay verstanden!

Leider gibt es noch einen Datenkonflikt bei meinem SQL.
SELECT ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Standort, ArbeitszeitraumOhneWe.Bundesland, ArbeitszeitraumOhneWe.Kostenstelle, ArbeitszeitraumOhneWe.Stunden_pro_Tag, Feiertag.Wertigkeit
FROM ArbeitszeitraumOhneWe LEFT JOIN Feiertag ON (ArbeitszeitraumOhneWe.[Datum] = Feiertag.[Datum]) AND (ArbeitszeitraumOhneWe.Bundesland = Feiertag.Bundesland2)
WHERE (((ArbeitszeitraumOhneWe.MitarbeiterID) In ("&[Formulare]![Sollstunden]![txtMAIDs]&")) AND ((Feiertag.Wertigkeit) Is Null Or (Feiertag.Wertigkeit)<1))
ORDER BY ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum;


Vielen Dank.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 30, 2018, 12:50:42
Habe noch ein bisschen rumprobiert doch leider erfolglos. Hat noch wer eine Lösungsidee?

Viele Grüße
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: DF6GL am November 30, 2018, 15:00:49
Hallo,

die Lösungsideen gibt es zuhauf, Du musst sie nur richtig umsetzen.


ZitatIn ("&[Formulare]![Sollstunden]![txtMAIDs]&"))

Wird nicht funktionieren...

Du musst den SQL-String mit VBA zusammensetzen und die IN -Bedingung einbauen.


Zitatich würde gerne meine qry nach ausgewählten daten im Listenfeld filtern

Was willst Du mit dieser qry überhaupt anstellen?


Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 30, 2018, 15:29:52
ZitatDu musst den SQL-String mit VBA zusammensetzen und die IN -Bedingung einbauen.
Da ich leider mit Vba nicht soviel am Hut habe, würde ich mich über weitere Auskunft freuen.

Ich habe eine Ansichtsmaske(Formular) für den Enduser. Dieser soll auf der Maske Filter eingeben. Diese filtern dann eine qry, aufbauend wird eine Kreuztablle erstellt, welche das Unterformular für die Ansichtsmaske ist.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: ebs17 am November 30, 2018, 15:49:39
ZitatDa ich leider mit Vba nicht soviel am Hut habe
Du solltest dazu Deine Einstellung ändern oder Deine Ansprüche an Deine Anwendung nicht so hoch ansiedeln oder solche ungeliebten Maßnahmen an einem bezahlten Service abgeben.

Zitatüber weitere Auskunft freuen
Vielleicht führst Du vorhandene Auskünfte (bspw. von Lachtaube) Dir ins Bewusstsein und (testweise) in Deine Programmierung.
Wenn vorhandene Hinweise für die Tonne sind (unreflektiert, vermutlich ignoriert) - woraus soll man schließen, was mit folgenden passiert?
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 30, 2018, 16:01:57
ZitatVielleicht führst Du vorhandene Auskünfte (bspw. von Lachtaube) Dir ins Bewusstsein und (testweise) in Deine Programmierung.
Wenn vorhandene Hinweise für die Tonne sind (unreflektiert, vermutlich ignoriert) - woraus soll man schließen, was mit folgenden passiert?
Es soll jetzt nicht böse gemeint rüberkommen, aber bis jetzt wurde doch jeder Vorschlag hinweis beachtet und auch angewendet und zu einem funktionierenden Filter zusammen gstellt. Jedoch fehlt mir jetzt noch die Eingliederung der InFunktion als Kriterium, da ich normalerweise meine Kriterien nur über Die Entwurfsansicht bei qrys beziehungsweise über sql erstelle.

Kann den Vorwurf deswegen leider nicht verstehen, dass Hinweise nicht angenommen wurden bzw ignoriert.?

Viele Grüße
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: ebs17 am November 30, 2018, 16:29:31
ZitatJedoch fehlt mir jetzt noch die Eingliederung der InFunktion als Kriterium
...
beziehungsweise über sql erstelle
O.K., wenn Dir die Struktur der SQL-Anweisung an sich klar ist (und diese wird ja letztendlich ausgeführt), muss man sich nur vor Augen halten, wie die funktionierende Anweisung aussehen muss als Ergebnis des Zusammensetzens. Die Verwendung einer Variablen für den Inhalt sowie der Test über Debug.Print wie oben bereits vorgeschlagen sind gute Mittel dazu, das Werk eigenen Tuns zu prüfen.

ZitatSELECT Irgendwas FROM Irgendwoher
WHERE Mitgliedsname IN ('Susi', 'Petra', 'Kurt')
bzw.
SELECT Irgendwas FROM Irgendwoher
WHERE MitgliedsID IN (3, 4, 17)
Das wären jetzt syntaxrichtige und somit ausführbare SQL-Anweisungen, das blau hervorgehobene sind Filter (Kriterien), falls Du Dich darauf orientierst.

In diesem Stadium sind SQL-Anweisung oder Filter nur einfacher Text und nach dessen Regeln zusammenzubauen. Erst mit der Ausführungsanweisung (Filter anwenden, SQL-Anweisung einem Objekt als Datenherkunft zuweisen) wird dieser String der DB-Maschine zugeführt und real ausgeführt.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am November 30, 2018, 16:36:46
Zitat

   Dim sql As String
       
sql = "SELECT ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum, ArbeitszeitraumOhneWe.Standort, ArbeitszeitraumOhneWe.Bundesland, ArbeitszeitraumOhneWe.Kostenstelle, ArbeitszeitraumOhneWe.Stunden_pro_Tag, Feiertag.Wertigkeit" & _
                            "FROM ArbeitszeitraumOhneWe LEFT JOIN Feiertag ON (ArbeitszeitraumOhneWe.Bundesland = Feiertag.Bundesland2 AND ArbeitszeitraumOhneWe.[Datum] = Feiertag.[Datum]" & _
                            "WHERE MitarbeiterID IN & Forms!Sollstunden!txtMAIDs AND ArbeitszeitraumOhneWe.Kostenstelle Like " * " & [Formulare]![f2_1_Sollstunden]![filterKostenstelle] & " * " And Feiertag.Wertigkeit Is Null Or Feiertag.Wertigkeit < 1"


   

End Sub

Vielen dank @ebs 
Soweit ich Vba jetzt verstanden habe, muss ich Sql als String definieren
und dann unten bei sql einbinden.
Jetzt zeigt er mir als Fehlermeldung eine Typenunverträglichkeit auf. Ich denke das mein Fehler in der Sql Einbindung nicht richtig ist.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: ebs17 am November 30, 2018, 16:50:18
ZitatIch denke das mein Fehler in der Sql Einbindung nicht richtig ist.
Ja, und es fehlt der prüfende Schritt, später dann auch die Übergabe des Strings an die Verwendung.
Debug.Print sql
Das gibt den erzeugten Finalstring in den Direktbereich aus (erreichbar über Strg + G aus dem VBA-Editor heraus). Dort kannst Du sehen, was Du erzeugt hast, und mit Kenntnis notwendiger Syntax kannst Du Fehler erkennen und überarbeiten.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 05, 2018, 14:16:59
  sql = " SELECT ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum, ArbeitszeitraumOhneWe.Standort, ArbeitszeitraumOhneWe.Bundesland, ArbeitszeitraumOhneWe.Kostenstelle, ArbeitszeitraumOhneWe.Stunden_pro_Tag, Feiertag.Wertigkeit " & _
                " FROM ArbeitszeitraumOhneWe LEFT JOIN Feiertag ON (ArbeitszeitraumOhneWe.Bundesland = Feiertag.Bundesland2) AND (ArbeitszeitraumOhneWe.[Datum] = Feiertag.[Datum]) " & _
                " WHERE MitarbeiterID"
               
                '& _
                    "IN (1,2,3)  AND ((Feiertag.Wertigkeit) Is Null Or (Feiertag.Wertigkeit)<1) " & _
                " ORDER BY ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum; "
   
        sql = sql & "in" & sAuswahl & _
                    " AND ((Feiertag.Wertigkeit) Is Null Or (Feiertag.Wertigkeit)<1) " & _
                    " ORDER BY ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum; "
        Debug.Print sql
 
   DoCmd.RunSQL sql


Ich bin eigentlich der Meinung, dass der Sql Code richtig sein müsste jetzt. Doch mir wird beim ausführen des Buttons immer noch ein Fehler(23429 angezeigt.
Er makiert immer die Zeile DoCmd.RunSQL
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Lachtaube am Dezember 05, 2018, 14:54:34
Du verklebst MitarbeiterID mit IN zu  MitarbeiterIDIN. Weiterhin wird Dir RunSQL garantiert keine Auswahlabfrage anzeigen.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 05, 2018, 14:56:17
Habe jetzt mal     Dim qdf As QueryDef, sqltext
sqltext = sql
For Each qdf In CurrentDb.QueryDefs
    If qdf.Name = "tmp" Then
        DoCmd.Close acQuery, "tmp": DoCmd.DeleteObject acQuery, "tmp"
    End If
Next
Set qdf = CurrentDb.CreateQueryDef("tmp", sqltext)
DoCmd.OpenQuery qdf.Name
   
    Me!UnterFormular.Requery
End Sub


benutzt. Jetzt holt er mir die ausgewählten daten in eine neue Abfrage.  Das heißt meine Verknüpfung mit SQL ist schon mal richtig soweit  :) :) :)
Welchen Befehl müsste ich nun anstelle von DoCmd.RunSQL sql das es funktioniert?
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 05, 2018, 14:58:03
ZitatDu verklebst MitarbeiterID mit IN
@LAchtaube hatte ich in meinem code auch schon berichtigt
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Beaker s.a. am Dezember 05, 2018, 15:52:54
@MP2109
Dein letztgezeigter Code ist überflüssig. Wenn du einen, funktionierenden, 
SQL-String hast (bei dir jetzt wohl "sql"), brauchst du diesen nur der DS-
Herkunft des UFos zu übergeben.

sql = "DeinString"
'u.U. halt noch ein Debug.Print
Me.DeinUFoControl.Form.RecordSource = sql


gruss ekkehard
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 05, 2018, 17:04:34
Also grundsätzlich habe ich eine Lösung

Private Sub filterAnwenden_Click()
Dim vItem As Variant
   Dim sAuswahlMitarbeiter As String
   Dim sql As String
   Dim rs As DAO.Recordset
   
AuswahlMitarbeiter = "("
    With Me!filterMitarbeiter

        If .ItemsSelected.Count > 0 Then

           For Each vItem In .ItemsSelected
                 AuswahlMitarbeiter = AuswahlMitarbeiter & .ItemData(vItem) & ","
            Next vItem
            'letztes Komma weg
            AuswahlMitarbeiter = Mid(AuswahlMitarbeiter, 1, Len(AuswahlMitarbeiter) - 1)
            'Klammer hinten dran
            AuswahlMitarbeiter = AuswahlMitarbeiter & ")"
              End If
       
        End With
   
   
   
             sql = " SELECT ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum, ArbeitszeitraumOhneWe.Standort, ArbeitszeitraumOhneWe.Bundesland, ArbeitszeitraumOhneWe.Kostenstelle, ArbeitszeitraumOhneWe.Stunden_pro_Tag, Feiertag.Wertigkeit " & _
                " FROM ArbeitszeitraumOhneWe LEFT JOIN Feiertag ON (ArbeitszeitraumOhneWe.Bundesland = Feiertag.Bundesland2) AND (ArbeitszeitraumOhneWe.[Datum] = Feiertag.[Datum]) " & _
                " WHERE MitarbeiterID"
               
           
        sql = sql & " IN" & AuswahlMitarbeiter & _
                    " AND ((Feiertag.Wertigkeit) Is Null Or (Feiertag.Wertigkeit)<1) " & _
                    " ORDER BY ArbeitszeitraumOhneWe.MitarbeiterID, ArbeitszeitraumOhneWe.Datum; "
                   
        Debug.Print filterMitarbeiter
       
Dim qdf As QueryDef, sqltext
sqltext = sql
For Each qdf In CurrentDb.QueryDefs
    If qdf.Name = "ArbeitszeitraumOhneWeFT" Then
        DoCmd.Close acQuery, "ArbeitszeitraumOhneWeFT": DoCmd.DeleteObject acQuery, "ArbeitszeitraumOhneWeFT"
    End If
Next
Set qdf = CurrentDb.CreateQueryDef("ArbeitszeitraumOhneWeFT", sqltext)

DoCmd.Close acForm, "f1_1_Navigation"
DoCmd.OpenForm "f1_1_Navigation"


End Sub


dies funktioniert jetzt auch. Ist vielleicht nicht besonders elegant, aber es funktioniert.


@beaker wie meintest du das mit sql = "DeinString"
'u.U. halt noch ein Debug.Print
Me.DeinUFoControl.Form.RecordSource = sql


Das funktioniert bei mir nicht. Denn er filtert zwar die Mitarbeiter, doch die anderen Daten der Kreuztabelle bleiben leer(außer Mitarbeiter). Ich denke das liegt daran das die Abfrage, die ich filter nicht die Kreuztabelle ist. Es ist die Abfrage aus der ich die Kreuztabelle erstelle.

Vielen Dank erstmal an alle die mir bis zu diesem Schritt geholfen haben, das mich sehr weiter gebracht!

Grüße
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Beaker s.a. am Dezember 05, 2018, 18:20:20
@MP2109
O.K., so langsam komme ich dahinter, was du eigentlich willst.
Ich dachte die ganze Zeit, du willst ein UFo filtern.
Was du willst, ist eine gespeicherte Abfrage, die Basis für eine
Kreuztabellenabfrage ist, zu ändern; -. glaube ich jetzt jeden-
falls so verstanden zu haben.
Dann wird's doch viel einfacher, du brauchst die Abfrage nicht
erst löschen und dann wieder neu erstellen. Es reicht den SQL-
String zu ändern
...
        Debug.Print filterMitarbeiter

        CurrentDb.QueryDefs("ArbeitszeitraumOhneWeFT").SQL = sql
End Sub


Wenn das Form "f1_1_Navigation" auf einer der beiden Abfragen
(sql bzw. "ArbeitszeitraumOhneWeFT" basiert, brauchst du es nicht
extra zu schliessen, da reicht dann ein
'wenn's ein HFo ist
Forms.f1_1_Navigation.Requery
'bei einem UFO
Forms.NameHFO.NameUFoControl.Form.Requery


gruss ekkehard
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 06, 2018, 09:46:54
@Beaker

Ja genau so wollte ich es eigentlich, wusste jedoch nicht den passenden VBA Befehl.
Ledier ändert sich bei CurrentDb.QueryDefs("ArbeitszeitraumOhneWeFT").SQL = sql
Forms.f1_1_Navigation.Requery

nichts .



++++
Ich habe es gerade noch ein mal ausprobiert ob es aktualisiert wenn man die Navigation wechselt und das tut es.
Heißt wohl ich muss wiederDoCmd.Close acForm, "f1_1_Navigation"
DoCmd.OpenForm "f1_1_Navigation"
benutzen.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: Beaker s.a. am Dezember 06, 2018, 15:39:18
Hallo,
ZitatIch habe es gerade noch ein mal ausprobiert ob es aktualisiert wenn man die Navigation wechselt und das tut es.
Das heisst, die Abfrage wird geändert aber das Form aktualisiert nicht?
Kann IMO dann eigentlich nur an der Referenz auf das Formular liegen.
gruss ekkehard
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 12, 2018, 10:54:00
@Beaker ja genau die Abfrage aktualisiert jedoch das UFO nicht.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: DF6GL am Dezember 12, 2018, 11:07:33
Hallo,

ein Naviform hat nur ein Unterformular(Steuerelement), auf das Bezug genommen werden muss und standardmäßig den Namen "Navigationsunterformular" hat.

Insofern muss es so lauten:

Forms!f1_1_Navigation!NavigationsUnterformular.Requery

sofern das UFO nicht umbenannt wurde.
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: MP2109 am Dezember 12, 2018, 16:22:22
@DF6GL achso ja habe ich verstanden. Jedoch wenn ich den Vba befehl eingebe, klappt leider nicht da er sagt, dass er f1_1_Navigation nicht kennt.

ich beende hier mal, da die Lösung die ich soweit habe den Zweck erfüllt. Zwar nicht perfekt jedoch macht er was er soll. Vielen Dank allen nochmal bei der Hilfe?
Titel: Re: Mehrfachauswahl mit Listenfeld
Beitrag von: DF6GL am Dezember 13, 2018, 10:20:02
Hallo,

wenn er den Formular-Namen nicht kennt, dann existiert der halt nicht und muss durch den aktuell richtigen Namen ersetzt werden.....