collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 92
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14129
  • stats Beiträge insgesamt: 68347
  • stats Themen insgesamt: 9206
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Mehrfachauswahl mit Listenfeld  (Gelesen 373 mal)

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #15 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.
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 948
Re: Mehrfachauswahl mit Listenfeld
« Antwort #16 am: November 30, 2018, 16:50:18 »
Zitat
Ich 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 sqlDas 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.
Mit freundlichem Glück Auf!

Eberhard
 

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #17 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
« Letzte Änderung: Dezember 05, 2018, 14:46:27 von MP2109 »
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1427
Re: Mehrfachauswahl mit Listenfeld
« Antwort #18 am: Dezember 05, 2018, 14:54:34 »
Du verklebst MitarbeiterID mit IN zu  MitarbeiterIDIN. Weiterhin wird Dir RunSQL garantiert keine Auswahlabfrage anzeigen.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: MP2109

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #19 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?
« Letzte Änderung: Dezember 05, 2018, 15:20:28 von MP2109 »
 

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #20 am: Dezember 05, 2018, 14:58:03 »
Zitat
Du verklebst MitarbeiterID mit IN
@LAchtaube hatte ich in meinem code auch schon berichtigt
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1965
Re: Mehrfachauswahl mit Listenfeld
« Antwort #21 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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #22 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
« Letzte Änderung: Dezember 05, 2018, 17:09:51 von MP2109 »
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1965
Re: Mehrfachauswahl mit Listenfeld
« Antwort #23 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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #24 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.
« Letzte Änderung: Dezember 06, 2018, 12:39:47 von MP2109 »
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1965
Re: Mehrfachauswahl mit Listenfeld
« Antwort #25 am: Dezember 06, 2018, 15:39:18 »
Hallo,
Zitat
Ich 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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #26 am: Heute um 10:54:00 »
@Beaker ja genau die Abfrage aktualisiert jedoch das UFO nicht.
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23509
Re: Mehrfachauswahl mit Listenfeld
« Antwort #27 am: Heute um 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.

Offline MP2109

  • Newbie
  • Beiträge: 23
Re: Mehrfachauswahl mit Listenfeld
« Antwort #28 am: Heute um 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?
« Letzte Änderung: Heute um 16:27:37 von MP2109 »
 

 

Mehrfachauswahl als Kriterium für Abfrage

Begonnen von Martin_8Board Tabelle/Abfrage

Antworten: 31
Aufrufe: 14789
Letzter Beitrag September 30, 2010, 08:21:06
von Martin_8
Mehrfachauswahl in Tabelle speichern

Begonnen von gopper0815Board Tabelle/Abfrage

Antworten: 2
Aufrufe: 3563
Letzter Beitrag Januar 19, 2011, 17:54:27
von gopper0815
Übergabe Mehrfachauswahl an Funktionsvariable - irgendwo klemmts

Begonnen von ritzenflitzerBoard Tabelle/Abfrage

Antworten: 3
Aufrufe: 3089
Letzter Beitrag Juni 06, 2011, 21:28:39
von DF6GL
Mehrfachauswahl Sortierung

Begonnen von Ben.WischBoard Formular

Antworten: 4
Aufrufe: 2513
Letzter Beitrag August 02, 2011, 17:01:54
von Ben.Wisch
Mehrfachauswahl mit [Feld].[Value]

Begonnen von Klaus S. aus BBoard Formular

Antworten: 4
Aufrufe: 2066
Letzter Beitrag August 28, 2013, 09:33:14
von Klaus S. aus B