Hallo,
habe schon einige Beiträge gelesen über das Filtern eines Berichts mit Kombinationsfeld.
Aber leider bei mir funtioniert das nicht :(
Was muss man denn hier machen?
Momentan habe ich eine Abfrage erstellt mit allen Feldern die ich haben möchte. Und mit dieser Abfrage einen Bericht erstellt.
Nun möchte ich aber den Bericht filtern mit einem Formular und eventuel mehreren Kombiboxen.
Wäre Euch dankbar wenn Ihr mir helfen könntet.
Danke
Albert
Hi Albert,
wie der acces Hilfe zu entnehmen ist, sind die folgenden Parameter beim Aufruf eines Berichtes einsetzbar:
DoCmd.OpenReport ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs
z.B. DoCmd.OpenReport "DeinBericht", acPreview, , "DeinFeld = '" & Me!DeinAuswahlfeld & "'"
öffnest Du Deinen Bericht in der Berichtsvorschau (acPreview) und wählst die Daten aus, die die obige Bedingung erfüllen. Hier jetzt mal vorausgesetzt, dass das Kombifeld ein Text-Feld ist.
Harald
Hallo Harald,
danke für Deine Anwort!
Leider funktioniert es bei mir aber nicht :(
Werde es aber für Heute mal aufgeben.
Vielen Dank
Albert
Hi Albert,
Zitat von: silentwolf am April 09, 2011, 17:48:02
Leider funktioniert es bei mir aber nicht :(
kannst Du näher beschreiben, was nicht funktioniert?
Denkbare Macken: Error Meldung - falsche Selektion - gar keine Selektion - ...
Harald
Hallo Harald,
danke für deine Antwort!
Also bei mir filtert sich der Report einfach nicht.
Hier ist mein Code
Private Sub cmdKontenAuswahl_Click()
DoCmd.OpenReport "rptEinahmenAusgaben", acPreview, , "KontenNr = '" & Me!cboKonten & "'"
End Sub
Der Bericht ist mit einer Abfrage erstellt worden. Das Kombinationsfeld mit dem Asistenten auch von der Abfrage.
Wenn ich nun den Report öffne zeigt es keine Daten an.
Hab schon ewig herumprobiert aber es funktioniert nicht also gar nichts.
Danke
Albert
Hallo,
Das Feld 'KontenNr' MUSS am Bericht vorhanden sein.
Das Kombifeld cboKonten muss aus seiner gebundenen Spalte Daten liefern, die dem Eintrag im Feld KontenNr entsprechen.
Wenn das Kombifeld ordnungsgemäß erstellt wurde, enthält die gebundene Spalte den Primärschlüssel der Kontentabelle - und der wird vermutlich nicht dem Eintrag in KontenNr übereinstimmen.
Wie ist den dein Kombi aufgebaut? Was steht denn in der gebundenen Spalte drin?
Hallo,
ich muss dieses Thema auch noch einmal aufgreifen. Ich habe ebenfalls einen Bericht den ich nach Kundennummern filtern möchte. Dies sollte vorher einem Formular geschehen. Und zwar möchte im Feld txtWert eine Kundennummer eingeben und der Bericht rpKudenauswertung sollte danach nur die Transaktionen, welche die Kudennummer betreffen anzeigen. ICh bekomme aber nur Fehlermeldungen. Vielleicht weiß jemand, was ich falsch mache. PS.Vers_kdNr ist das Feld im Bericht, welches sgefiltert werden soll. Anbei meine Filterbdingungen.
Option Compare Database
Option Explicit
Dim m_rpKundenauswertung As Report
Private Sub btnFilterAnwenden_Click()
Dim strwhere As String
strwhere = "VERS_KDNR" & txtWert
With m_rpKundenauswertung
.Filter = strwhere
.FilterOn = True
.txtFilter.Visible = True
.txtFilter = strwhere
.lblFilter.Visible = True
End With
End Sub
Hallo,
bin ja auch nicht der Super Profi gg aber vieleicht hilft mein Kommentar ja ein wenig :)
Warum filterst Du denn nicht vorher und dann mit einem Button den Bericht ansteuern.
Also zuerst in einem Formular nach deinen Kunden Suchen und wenn Du den richtigen hast mit einem Button den Bericht öffnen der Dir dann diesen Anzeigt.
So würde ich es halt mal versuchen ;D
HTH
Hallo, danke erstmal für die Info,
Genauso soll es dann ja sein. Aber irgendwie haut mein Filter nicht hin.
Ist doch kein Problem :) bin ja auch immer froh wenn mir jemand hilft gg :)
Also such mal nach einen Suchformular in 10 Minuten das ist recht gut und auch gut beschrieben :)
Dann kannst Du mal den Filter mit diesen Formular erstellen und danach kannst einen Button in dieses Formular einfügen der Dir dann diesen DS im Bericht öffnet druckt und so weiter.
HTH
HAllo,
Option Compare Database
Option Explicit
Dim m_rpKundenauswertung As Report
Private Sub btnFilterAnwenden_Click()
Dim strwhere As String
strwhere = "VERS_KDNR = '" & nz(Me!txtWert,"*" ) & "'" ' falls VERS_KDNR vom Datentyp TETX ist
DoCmd.Openreport "rpKundenauswertung",acPreview,,strwhere
End Sub
Oh super, haut hin. Was muss ich noch machen, wenn ich in einem Textfeld im Formular noch einen Monat oder ein Datum eingeben möchte. ;)
Hallo,
was jetzt?
eine Monatszahl (und eine unbedingte Jahreszahl dazu) oder ein Datum oder einen Datumsbereich?
Ich würde zwei Textfelder ("txtAnfDatum", "txtEndDatum") empfehlen, in die jeweils das Anfangsdatum und das Enddatum eingegeben werden:
Dann hieße das etwa so:
strwhere = "VERS_KDNR = '" & nz(Me!txtWert,"*" ) & "' and [Datumsfeld] between " & Format (nz(Me!txtAnfDatum,#01/01/1900#), "\#yyyy-mm-dd\#") & " and " & Format (nz(Me!txtEndDatum,#31/12/2099#), "\#yyyy-mm-dd\#")
Hallo,
also hat super geklappt. Am Anfang hat ich ein paar Probleme. Jetzt läufts aber.
Kann man in diesem Filterformular noch nen Button einfügen, welcher zum Beispiel Preiserhöhung heißt. Dann würde ich in ein txtfeld die Erhöhung (zum Beispiel 30%) eintragen und der Bericht sollte dann den bereits formulierten Umsatz um 30% erhöhen und mir diese Werte anzeigen. Geht soetwas? Wie kann man so etwas im Formular formulieren?
Hallo pahiti,
ZitatKann man in diesem Filterformular noch nen Button einfügen, welcher zum Beispiel Preiserhöhung heißt. Dann würde ich in ein txtfeld die Erhöhung (zum Beispiel 30%) eintragen und der Bericht sollte dann den bereits formulierten Umsatz um 30% erhöhen und mir diese Werte anzeigen. Geht soetwas? Wie kann man so etwas im Formular formulieren?
Das geht wohl am besten, wenn Du ein berechnetes Feld in die dem Bericht zu Grunde liegende Abfrage einfügst:
Luftcode, Feldnamen anpassen
UmsatzHoch: [FeldMitUmsatz]*(1+(Nz(Forms!DeinForm!DeinAufschlagfeld,0))Das Öffnen des Berichts bleibt dann wie gehabt.
hth
gruss ekkehard
Hallo Beaker,
danke für die Info. Was beduetet die Anweiosung DeinForms!??
Hallo Pahiti,
Zitatdanke für die Info. Was beduetet die Anweiosung DeinForms!??
Das ist keine Anweisung, sondern der Bezug auf Dein Formular. Ich kann ja nicht wissen, wie Dein Formular heisst.
Mir ist da aber gerade auch noch eine Fehler aufgefallen (obwohl ich glaube, dass Access den selber korrigieren würde):
UmsatzHoch: [FeldMitUmsatz]*(1+(Nz(Formulare!
NameDeinesFormulars!DeinAufschlagfeld,0))
Jetzt klarer?
gruss ekkehard
Hallo,
das ist eigentlich gar kein Fehler, sondern sogar besser, bzw. richtig, "Forms" anstelle "Formulare" im Abfrageentwurf zu schreiben, auch wenn Access das in Folge rückwärts wieder in der Abfrageentwurfs-Ansicht "eindeutscht". In dem dahinterliegenden SQL-String MUSS "Forms" stehen, nicht "Formulare" , weil dies der SQL-Interpreter nicht auflösen kann. So "schlau" ist die Übersetzungsfunktionalität von Access auch wieder nicht, dass es ( auf deutsch eingegebenes ) "Formulare" im Hintergrund in "Forms" umwandelt.
Hallo,
sorry aber ich krieg es nicht gebacken. So sieht jetzt meine Prozedur aus, welche beim Klicken auf den Filterknopf angewandt werden soll. Im Feld txtPreiserhöhung habe ich standardmäßig 100% hinterlegt, so dass ersteinmal der richtige Umsatz gezeigt wird. Dann möchte ich mir diesen durch Klicken erhöhen lassen. Danke schonmal vorab.
Private Sub btnFilterAnwenden_Click()
Dim strwhere As String
strwhere = "vers_wirklich_kdnr = '" & Nz(Me!txtKundennummer, "*") & "' and [auftrag_datum] between " & Format(Nz(Me!txtAnfDatum, #1/1/1900#), "\#yyyy-mm-dd\#") & " and " & Format(Nz(Me!txtEndDatum, #12/31/2099#), "\#yyyy-mm-dd\#") & [Umsatz]*(1+(Nz(Formulare!frm_kundenfilter!txtPreiserhoehung,0))
DoCmd.OpenReport "rp_Sendungsstatistik", acPreview, , strwhere
End Sub
Hallo,
mal abgesehen davon, dass da eine schließende Klammer am Ende fehlt,
& [Umsatz]*(1+(Nz(Formulare!frm_kundenfilter!txtPreiserhoehung,0)))
hat die Anweisung eigentlich nix in der Where-Klausel zu suchen - sie beirkt nichts, ausser dass die Klausel nicht funktioniert.
Diese Anweisung kannst du bestenfalls in der Abfrage einbauen, die als Datenherkunft für den aufgerufenen Bericht dient (siehe letzte Antwort von Beaker).
und wenn das Feld txtKundennummer leer ist, kann ich mir nicht vorstellen, dass du damit Daten geliefert bekommst
"vers_wirklich_kdnr = '" & Nz(Me!txtKundennummer, "*") & "'
Es sei denn es existiert eine Kundennummer die * lautet
Hallo pahiti,
ZitatIm Feld txtPreiserhöhung habe ich standardmäßig 100% hinterlegt, so dass ersteinmal der richtige Umsatz gezeigt wird.
Wenn Du in der Feld für die Preiserhöhung 100% eingibst verdoppelst Du den Preis.
Zitatstrwhere = "vers_wirklich_kdnr = '" & Nz(Me!txtKundennummer, "*") & "' and [auftrag_datum] between " & Format(Nz(Me!txtAnfDatum, #1/1/1900#), "\#yyyy-mm-dd\#") & " and " & Format(Nz(Me!txtEndDatum, #12/31/2099#), "\#yyyy-mm-dd\#") & [Umsatz]*(1+(Nz(Formulare!frm_kundenfilter!txtPreiserhoehung,0))
Hast Du dir den String mal im Direktfenster ausgeben lassen?
Mach das mal, dann wirst Du sehen, dass da ausser der fehlenden Klammer am Ende noch ein paar "," und ")" verschoben sind.
Und, wie Peter schon schrieb, gehört das berechnete Feld nicht in die Filterbedingung für den Bericht, sondern in die Datenherkunft des Berichts (das was dann anschliessend gefiltert wird).
ZitatDann möchte ich mir diesen durch Klicken erhöhen lassen
Soll das jetzt fest gespeichert werden? Ich dachte, dass soll nur im Bericht angezeigt werden, oder im Formular?
gruss ekkehard