Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Bericht über Dropdown im Formular filtern

Begonnen von Micha 1310, September 09, 2022, 14:07:32

⏪ vorheriges - nächstes ⏩

Micha 1310

Hallo zusammen,

Ich bin gerade dabei eine Angebotsdatenbank für unser Team zu erstellen.
Hierfür habe ich eine Tabelle mit Kunden (Name*, Nr,...), eine mit Angeboten (Kunde als Nachschlage-Assistent,ID*...) und eine mit Positionen pro Angebot (ID*, Losgröße, Preise,...). Die mit Stern markierten sind jeweils die Primärschlüssel.

Alle Formulare zur Eingabe und die anderen Berichte habe ich in einem Navigationsformular dargestellt.

Nun zu meiner Frage:

Ich habe eine Abfrage erstellt und auf ihr basierend einen Bericht, der mir alle Angebote pro Kunde ausgibt. Soweit passt und funktioniert auch alles.

Ich möchte jetzt aber diesen Bericht über ein Dropdown Feld in einem Formular filtern, sodass mir nur die Angebote für den einen ausgewählten Kunden angezeigt werden.
Dafür scheine ich aber leider zu blöd zu sein. Kann mir hier bitte jemand helfen?

Vielen Dank ☺️

  •  

MzKlMu

#1
Hallo,
Du hast doch bestimmt ein Formular zur Anzeige des Kunden.
In diesem Formular kannst Du einen Button plazieren der den Bericht zum angezeigten Kunden druckt.
Den Primärschlüssel kannst Du dann als Kriterium verwenden.
Der Code dazu sieht so aus:
DoCmd.OpenReport "Berichtsname", acViewPreview, , "KundenID = " & Me.KundenIDImFormularEin extra Dropdown braucht es da nicht.

Anmerkung:
Name als Primärschlüssel ist völlig ungeeignet. Textfelder taugen meist nicht als PS. Außerdem ist der Name vom Prinzip her nicht geeignet. Beim 2. Müller geht das schief. Name als Feldname sollte man auch unbedingt vermeiden. Die Kundentabelle braucht daher einen extra Primärschlüssel (KundenID als Autowert).
Weiterhin ist von der Verwendung von Nachschlagefeldern in Tabellen dringend abzuraten. Die haben nur Nachteile. Nur in Formularen sind diese als Kombinationsfelder sinnvoll.
Siehe hierzu:
http://web.archive.org/web/20060213100523/http://dbwiki.de/wiki.php?title=Access_Anf%E4nger:_Die_Nachteile_von_Nachschlagefeldern
Und weiter (im 2. Absatz):
https://www.access-tutorial.de/tabellen/tipps.htm
Gruß
Klaus
  •  

Micha 1310

Hallo Klaus,

danke für deine schnelle Antwort und für die Anmerkungen.

Im ,,Namen der Kunden" ist auf Wunsch meiner Kollegen auch direkt der Ort, sodass es hier bei unseren Kunden keine Dopplungen geben wird. Ich habe also quasi ,,Name a Werk b" immer eingetragen.

Den Nachschlage-Assistent habe entfernt.

Ein Formular zur Anzeige des Kunden habe ich nicht, wie müsste ich das dann aufbauen?
Es gab vor meiner Zeit im Unternehmen eine ähnliche Datenbank die wohl über ein DropDown gefiltert wurde, daher kommt meine Frage. Die Datei ist aber leider weg.

Ich habe im Formular ,,Abfrage nach Kunden" das Dropdown und einen Button zum Anzeigen des Berichtes. Das war der Wunsch der Kollegen.
Nur leider bekomme ich das als Filterkriterium nicht verknüpft.

Kannst du mir da helfen?

Viele Grüße
  •  

MzKlMu

#3
Hallo,
Zitat von: undefined... auch direkt der Ort, sodass es hier bei unseren Kunden keine Dopplungen geben wird.
Sorry, aber so etwas ist für eine Datenbank völliger Unsinn und ein NoGo. Außerdem verstößt das bereits gegen die 1. Normalform (atomare Inhalte). Und, wie willst Du auch mit Name und Ort zuverlässig Doppelungen verhindern (sag niemals nie) ? Weiterhin kannst Du ja trotzdem einen Autowert als PS anlegen.
Was die Kollegen wollen spielt hier eigentlich keine Rolle. Zu Ansichstzwecken kannst Du jederzeit die beiden Felder über eine Abfrage zusammensetzen und wie gewünscht angezeigen.
Zitat von: undefinedEin Formular zur Anzeige des Kunden habe ich nicht, wie müsste ich das dann aufbauen?
Das ist ein ganz einfaches normales Formular mit der Kundentabelle als Datenherkunft/Datenquelle. In dieses Formular kommt dann der Button mit obigem Code.
Zitat von: undefinedIch habe im Formular ,,Abfrage nach Kunden"
Was zeigst Du denn in diesem Formular an?

Hier noch was zum Lesen. Für Access sind solche Grundlagen unerlässlich, denn Access muss man lernen, da kann man nicht mal so einfach anfangen.

https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/

https://www.access-tutorial.de/
Gruß
Klaus
  •  

Micha 1310

Hallo,

ich bin neu im Unternehmen und auch in der Anwendung mit Access und versuche hier gerade schlicht die Wünsche meiner Kollegen umzusetzen. 🙈
Ich bin soweit auch fertig mit den Eingabeformularen, sonstigen Abfragen und Berichten. Das klappt alles wunderbar, bis auf dieses letzte Detail.

Im Formular ,,Abfrage nach Kunden" ist lediglich das Dropdown Feld über das ich die Kunden auswählen kann und daneben ein Button über den ich den Bericht dann öffne. So war es wohl auch in der alten Datei und so wollen sie es wieder.
Gibt es dafür eine Lösung?

Viele Grüße
  •  

MzKlMu

#5
Hallo,
gerade als Neuling in Access solltest Du die Hinweise nicht einfach ignorieren, das wird Dir noch auf die Füße fallen. Aber egal, versuche es so:
DoCmd.OpenReport "Berichtsname", acViewPreview, , "KundenName = '" & Me.Dropdownfeld & "'"Als Code für den Button. Weil Kundename Text ist, sind Hochkomma erforderlich.
Wobei Du aber zwingend auf den Feldnamen "Name" verzichten musst. Name ist eine Eigenschaft (reserviertes Wort) und beinhaltet den Namen eines Objekts.
Gruß
Klaus
  •  

Beaker s.a.

Hallo,
Abgesehen von Klaus' Hinweisen, mit denen du dich unbedingt beschäftigen
solltest; -
wozu der Button? Klicken deine Kollegen gerne rum?
Den Bericht kann man doch direkt nach Auswahl (Nach Aktualisierung) im Kombi
öffnen
Private Sub Dropdownfeld_AfterUpdate()
    DoCmd.OpenReport "Berichtsname", acViewPreview, , "KundenName = '" & Me.Dropdownfeld & "'"
End Sub

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.
  •  

Micha 1310

Hallo zusammen

ich bin definitiv gewillt die ganzen Ratschläge entgegen zu nehmen und werde diese auch versuchen so umzusetzen wenn ich morgen wieder im Büro bin.
Falls das anders rüber gekommen ist tut es mir leid.

Wo gebe ich die Codes denn dann ein?

Viele Grüße
  •  

Beaker s.a.

ZitatWo gebe ich die Codes denn dann ein?
Siehe Prozedurkopf; - bei Klaus hätte er gelautet
Private Sub DeinButton_Click()
--
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.
  •