Mehrfachauswahl von Listenfeld in Bericht

Moderator: ModerationP

Mehrfachauswahl von Listenfeld in Bericht

Beitragvon iGamertag » 14. Jun 2018, 10:54

Hallo Zusammen,
Ich habe ein Listenfeld, welches lstMehrfachauswahl heißt. Dieses Listenfeld ist auf der Basis der Abfrage qryMehrfachauswahl entstanden.
Nun will ich mehrere Einträge markieren und die markierten Einträge in einen Bericht bekommen, oder zumindest in eine Ansicht in der die ausgewählten Datensätze vorhanden sind.
Also ich weiß, dass ich dafür VBA benötige und einen Teil des Codes habe ich auch schon...aber wie bekomme ich die Einträge dann in einen Bericht, beziehungsweise eine Ansicht?

Code: Alles auswählen
Private Sub cmdGetriebeKalkulieren_Click()
Private Sub cmdStart_Click()
    Dim varIndex As Variant
    Dim lngPersonID As Long
    For Each varIndex In Me!lstMehrfachauswahl.ItemsSelected
        lngPersonID = _
        Me!lstMehrfachauswahl.ItemData(varIndex)
       
        'Hier etwas mit lngPersonID erledigen
        '????????????????????????????????????
       
        Debug.Print lngPersonID
    Next varIndex
End Sub
End Sub


Viele Grüße
Simon
iGamertag
 

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon Wurstmann » 14. Jun 2018, 11:03

Hey,

eine Möglichkeit:

du kannst dir eine temporäre Tabelle erstellen in welche die ausgewählten Items aufgenommen werden und diese dann in die restlichen Abfragen joinen. Somit wird dir immer nur die Auswahl angezeigt.

VG
WM
Wurstmann
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 440
Registriert: 26. Jun 2013, 09:11

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon knobbi38 » 14. Jun 2018, 13:05

Hallo,

du kannst dafür die IN Klausel in einem SQL-Befehl verwenden.
Concatiniere die selektierten IDs zu einer kommasepariertem String und nehme diesen als Kriterium, z.B.
Code: Alles auswählen
strSelectedID= "100,101,105,107"

' SQL-Befehl zusammensetzen
strSQL = "SELECT * FROM <tabellenname> WHERE PersonID IN (" & strSelectedID & ");"
Diesen kannst du als Basis für einen Bericht nehmen.

Gruß
Ulrich
Zuletzt geändert von knobbi38 am 14. Jun 2018, 19:52, insgesamt 2-mal geändert.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 542
Registriert: 02. Jul 2015, 14:23

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon knobbi38 » 14. Jun 2018, 13:13

Wurstmann hat geschrieben:du kannst dir eine temporäre Tabelle erstellen in welche die ausgewählten Items aufgenommen werden und diese dann in die restlichen Abfragen joinen. Somit wird dir immer nur die Auswahl angezeigt.

Das ist keine so gute Idee. "Temporäre Tabellen" führen dazu, daß die DB immer größer wird ("blow up"), weil diese nicht wirklich temporär sind und nicht automatisch gelöscht werden! Erst bei der Datenkomprimierung werden diese endgültig gelöscht.

Ist auch für diesen Fall vollkommen unnötig, da reicht einfaches SQL aus.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 542
Registriert: 02. Jul 2015, 14:23

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon iGamertag » 14. Jun 2018, 14:59

Hallo zusammen,

Erstmal danke für die Antworten :)

@knobi38:
Da reicht einfaches SQL

Also ich habe mich durch ein paar Foren gewühlt und es wird immer wieder SQL verwendet, leider komme ich nicht so richtig drauf, wie ich das ganze aufbauen soll. Vielleicht gebe ich noch einen kleinen Rahmen.
Also ich habe wie anfangs beschrieben eine Abfrage mit 6 Spalten die qryMehrfachauswahl heißt. Dabei geht es um Informationen über ein getriebe. Aus dieser Abfrage ergeben sich die Datensätze aus der ListBox lstMehrfachauswahl. Diese Listbox befindet sich in frmAnsichtMehrfachauswahl. Die Eigenschaft Mehrfachauswahl habe ich auf Einzeln.
Wie kann ich durch "einfaches SQL" mit den markierten Daten weiterarbeiten?
Gruß
iGamertag
 

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon iGamertag » 14. Jun 2018, 15:00

Concatiniere die selektierten IDs zu einer kommasepariertem String und nehme diesen als Kriterium, z.B.


Diese Aussage verstehe ich leider trotz Beispiel nicht so recht du musst da leider etwas weiter ausholen :/
iGamertag
 

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon Nouba » 14. Jun 2018, 15:26

Code: Alles auswählen
Private Sub Command2_Click()
   Dim g, v, i As Long, Criteria As String

   With Me.lstMehrfachauswahl
      If .ItemsSelected.Count > 0 Then
         ReDim g(.ItemsSelected.Count - 1)
         For Each v In .ItemsSelected
            g(i) = .ItemData(v)
            i = i + 1
         Next
         'was Du nun mit dem Kriterium konkret anstellen willst, kann ich dem
         ' Beitrag nicht entnehmen
         Criteria = "GetriebeId In (" & Join(g, ",") & ")"
         MsgBox Criteria
      End If
   End With
End Sub
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Nouba
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17329
Registriert: 13. Mär 2006, 12:55
Wohnort: Berlin

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon knobbi38 » 14. Jun 2018, 20:05

Dann hole ich mal etwas weiter aus:
Code: Alles auswählen
' --- Control events ----------------------------------------------------------
Private Sub btnPrint_Click()
  Dim strSelectedIDs As String
  Dim strCriteria As String
 
  strSelectedIDs = GetSelectedItems()
  Debug.Print "Selected IDs: '" & strSelectedIDs & "'"

  If Len(strSelectedIDs) > 0 Then
    strCriteria = "[ID] IN(" & strSelectedIDs & ")"
    Debug.Print "Criteria: '" & strCriteria & "'"
   
   DoCmd.OpenReport _
        ReportName:="rptTestDaten", _
        View:=acViewPreview, _
        WhereCondition:=strCriteria
  End If
End Sub

' --- Private methods ---------------------------------------------------------
Private Function GetSelectedItems() As String
  Dim vntItem As Variant
  Dim strResult As String
  Dim lngBoundColum As Long
 
  With Me!lstMehrfachauswahl
    For Each vntItem In .ItemsSelected
      strResult = strResult & "," & CStr(.Column(.BoundColumn - 1, vntItem))
    Next
  End With
 
  ' Remove leading delimiter
  If Len(strResult) > 0 Then strResult = Mid$(strResult, 2)
 
  GetSelectedItems = strResult
End Function


Gruß
Ulrich
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 542
Registriert: 02. Jul 2015, 14:23

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon iGamertag » 15. Jun 2018, 08:55

Hallo,
Wir kommen der Sache schon näher. Die angehängte Testdatenbank von Ulrich macht genau was sie soll.
Nur leider ist eines meiner Probleme dabei noch nicht behoben. Im Code wird die ID der Tabelle als Kriterium benutzt, um die Einträge für den Bericht auszumachen.
Nur leider habe ich keine ID, da meine ListBox von einer Abfrage kommt. Wie kann ich das Problem behandeln?
Ich habe da an eine leere Tabelle gedacht, die mit der Abfrage befüllt wird und am Ende wieder geleert wird...
Aber vielleicht gibt es auch alternativen.
Tut mir leid, dass ich mich vielleicht etwas tollpatschig anstelle.

Gruß
Simon
---------------------------------------------------------------------------
Mit freundlichen Grüßen
iGamertag


„Der Unterschied zwischen dem, der du bist und dem, der du sein möchtest, ist das was du tust.“
iGamertag
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 15. Jun 2018, 08:13

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon KlausMz » 15. Jun 2018, 09:03

Hallo,
Nur leider habe ich keine ID, da meine ListBox von einer Abfrage kommt.
eine Abfrage bassiert ja auf einer Tabelle.
Und die Tabelle hat doch bestimmt einen Primärschlüssel. Und der kann als ID verwendet werden.
Der Datensatz den Du per Mehrfachauswahl markieren willst, benötigt jedenfalls ein eindeutiges Feld.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 38340
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon iGamertag » 15. Jun 2018, 09:07

Hallo,

Meine Afrage basiert auf ungefähr 6 oder 7 Tabellen, die in Beziehung zueinander stehen...Welchen Primärschlüssel nehme ich da?

Der Datensatz den Du per Mehrfachauswahl markieren willst, benötigt jedenfalls ein eindeutiges Feld.


Also aktuell habe ich eben dieses eindeutige Feld nicht... Das muss ich ja dann erzeugen (wie auch immer).
---------------------------------------------------------------------------
Mit freundlichen Grüßen
iGamertag


„Der Unterschied zwischen dem, der du bist und dem, der du sein möchtest, ist das was du tust.“
iGamertag
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 15. Jun 2018, 08:13

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon KlausMz » 15. Jun 2018, 09:09

Hallo,
dann musst Du mehrere Felder verwenden die zusammen den Datensatz eindeutig idendifizieren.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 38340
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon knobbi38 » 15. Jun 2018, 11:39

Oder mal anders herum gefragt: nach welchen Kriterien wählst du die Datensätze aus, die im Bericht angezeigt werden sollen?
Ohne ein paar mehr Informationen wird dir keiner helfen können.

Ulrich
Zuletzt geändert von knobbi38 am 15. Jun 2018, 12:17, insgesamt 1-mal geändert.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 542
Registriert: 02. Jul 2015, 14:23

Re: Mehrfachauswahl von Listenfeld in Bericht

Beitragvon iGamertag » 15. Jun 2018, 12:02

Hallo Zusammen,
Also ich habe es geschafft :)
Ich habe meine Abfrage so aufgebaut, dass es ein eindeutiges Kriterium zum identifizieren der Datensätze gibt.
Dann konnte ich den Code von Ulrich bzw. Knoobi 38 verwenden und musste ihn nur auf meinen Fall umschreiben.

Nochmal Herzlichen Dank an alle, die mir geholfen haben!

Gruß
Simon
---------------------------------------------------------------------------
Mit freundlichen Grüßen
iGamertag


„Der Unterschied zwischen dem, der du bist und dem, der du sein möchtest, ist das was du tust.“
iGamertag
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 15. Jun 2018, 08:13


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste