Beitrag aus SmartTools Access Weekly
Bericht aus Listenfeld öffnen
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Aus einem Listenfeld (Listbox) mit den Feldern "Kundennummer" (Autowert, bei der Eingabe gesetzt) und "Kundenname", ca. 100 Einträge, möchte ich durch Anklicken des Kundennamens diesen Namen in den Report "Daten des Kunden" übertragen. Hinter diesem Report steht eine Abfrage gleichen Namens, die in dem Feld "Kundenname" als Kriterium "[Kundenname].[Name]" hat. Bei normalem Aufruf des Reports erscheint ein Fenster, in dem nach dem Kundenamen gefragt wird. Diese zusätzliche Eingabe möchte ich vermeiden, und durch das Anklicken aus dem Listenfeld ersetzen.
Diverse Anfragen
ANTWORT Wenn Sie als Kriterium "Kundenname" verwenden, gibt es Probleme, sobald einmal zwei Kunden mit gleichem Namen vorhanden sind. Besser ist es, die automatisch generierte Kundennummer als Kriterium zu verwenden. Entfernen Sie zunächst das Kriterium in der Abfrage. Geben Sie dann in der Eigenschaft "Beim Klicken" des Listen-Steuerelementes folgende Anweisungen ein:
Dim lngKdNr As Long
lngKdNr = Me.Listenfeld.Column(0)
DoCmd.OpenReport _
ReportName:= "Daten des Kunden", _
WhereCondition:= "[Kundennummer]= " & lngKdNr
Zunächst wird aus der Spalte 1 des Listenfeldes die Kundennummer ausgelesen - die Adressierung erfolgt hier von "0 bis Anzahl Spalten -1", so dass Index "0" die erste Spalte liefert. Anschließend öffnet "DoCmd.OpenReport" den Bericht. Der Parameter "WhereCondition" sorgt dabei dafür, dass nur der einzelne Datensatz des Kunden gemäß Kundennummer ausgedruckt wird. Wenn Sie doch nach Kundenname selektieren möchten, verwenden Sie folgende Anweisungen:
Dim strName As String
strName = Me.Listenfeld.Column(1)
DoCmd.OpenReport _
ReportName:= "Daten des Kunden", _
WhereCondition:= "[Kundenname]= '" & strName & "'"
Hier lesen wir zunächst den Namen aus Spalte 2 des Listenfeldes. Die WhereCondition ist entsprechend auf "Kundenname" geändert, wobei der Name in einfachen Hochkommas anzugeben ist.