none
DoCmd.OpenReport Filtert nicht

    Frage

  • Guten Tag alle zusammen,

    bei meinem letzten Thema ist es bereits ums Filtern gegangen, aber jetzt geht es mir um dem Bericht.

    Option Compare Database
    Option Explicit
    
    
    Private Sub Filtern_Click()
    Me.Filter = "Nachname Like '*" & Me!Filter & "*'"
    Me.FilterOn = True
    Dim Aktuelle_Kunden As Variant
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, "Filter"
    End Sub
    Er filtert mir bereits die richtigen Nachnamen und es klappt alles auch Einwandfrei, nur das einzige Problem besteht bei OpenReport das er mir nicht die richtige Person dabei filtert. Der Bericht ist eine Abfrage welches aktuelle Kunden darstellt, welches auch funktioniert die Frage dabei ist ob dies überhaupt möglich ist zu filtern oder ob hierbei ein eigener Bericht generiert werden muss und nicht dem Bericht jetzt entsprechen sollte.

    Dienstag, 4. Juni 2013 08:28

Antworten

  • Hallo, Christian!
     
    Christian_Huml wrote:
    > Lade doch eine verkleinerte, aufs minimum reduzierte Datenbank hoch
    > und poste den Link hier, dann kann man sich das ansehen.
    > Habe die Datenbank hochgeladen, es wurden Personenbezogene Daten,
    > sowie interne Firmendaten entfernt, da die Datenbank bereits benutzt
    > wurde. Die Datenbank kann unter folgenden Link heruntergeladen
     
    Du hast zwei Fehler in der Codezeile für den Berichtsaufruf.
    Es fehlt ein Komma und du hast das Textfeld statt der Filter-Eigenschaft
    verwendet. Die Zeile müsste lauten:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
     
    Kopiere das einfach von hier und ersetze damit deine bisherige Zeile.
     
    Noch 2 Hinweise:
     
    1. Die Dim-Zeile kannst du - wie schon erwähnt - löschen.
     
    2. Du hast das Textfeld "Filtertxt" genannt. Ich hatte dir "txtFilter"
    vorgeschlagen, weil es den Standards entspricht, den "Typ" des
    Steuerelementes als Vorsilbe zu verwenden. Bei "txt..." weiß also jeder
    versierte VBA-Programmierer, dass es sich um ein Textfeld handelt.
     
    --
    Servus
    Karl
    *********
    Access-FAQ: http://www.donkarl.com + AEK16
    Access-Entwickler-Konferenz, 28/29.9. Nürnberg, 19/20.10. Hannover
     
     
     
    Mittwoch, 5. Juni 2013 13:37

Alle Antworten

  • Christian_Huml wrote:
    > ...
    > Private Sub Filtern_Click()
    > Me.Filter = "Nachname Like '*" & Me!Filter & "*'"
    > Me.FilterOn = True
    > Dim Aktuelle_Kunden As Variant
     
    Wozu hast du denn diese Dim-Zeile?
     
    > DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, "Filter"
    > End Sub
    >
    > Er filtert mir bereits die richtigen Nachnamen und es klappt
    > alles auch Einwandfrei, nur das einzige Problem besteht bei
    > OpenReport das er mir nicht die richtige Person dabei filtert. Der
    > Bericht ist eine Abfrage welches aktuelle Kunden darstellt,
    > ...
     
    Wenn ich deine Angaben richtig verstehe, sollte das klappen:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
     
    --
    Servus
    Karl
    *********
    Access-FAQ: http://www.donkarl.com + AEK16
    Access-Entwickler-Konferenz, 28/29.9. Nürnberg, 19/20.10. Hannover
     
     
    Dienstag, 4. Juni 2013 08:39
  • Wozu hast du denn diese Dim-Zeile?

    Zum deklarieren. 

    Wenn ich deine Angaben richtig verstehe, sollte das klappen:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter

    Habe es ausprobiert klappt aber nicht. Also das Textfeld nennt sich Filter und der Button nennt sich Filtern. Müsste ich hierbei nicht das Textfeld ansprechen? Dies filtert aber auch nicht.

    Dienstag, 4. Juni 2013 08:58
  • Christian_Huml wrote:
    > Wozu hast du denn diese Dim-Zeile?Zum deklarieren.
     
    Ok. ;-)
    Warum deklarierst du etwas, das du dann nicht verwendest?
     
    > Wenn ich deine Angaben richtig verstehe, sollte das klappen:
    >
    > DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
    > Habe es ausprobiert klappt aber nicht. Also das Textfeld nennt sich
    > Filter und der Button nennt sich Filtern.
    > ...
     
    Benenne das Textfeld um, z.B. in "txtFilter".
    "Filter" heißt schon die Eigenschaft von Formularen und Berichten.
    Wenn man solche Access-Schlüsselbegriffe für eigene Benennungen
    verwendet, gibt das oft seltsame Fehler.
     
    Nach der o.a. Umbenennung:
     
    Me.Filter = "Nachname Like '*" & Me!txtFilter & "*'"
    Me.FilterOn = True
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
     
    Wenn das Ergebnis wieder "klappt aber nicht" ist, wie drückt
    sich das genau aus?
    Kommt eine Meldung, kommt keine aber alle Datensätze
    im Bericht, oder was passiert?
     
    Gibt es das Feld "Nachname" in der Datenherkunft des Berichtes?
     
    Teste auch mal alternativ die Seitenansicht:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewPreview, , Me.Filter
     
    --
    Servus
    Karl
    *********
    Access-FAQ: http://www.donkarl.com + AEK16
    Access-Entwickler-Konferenz, 28/29.9. Nürnberg, 19/20.10. Hannover
     
     
     
    Dienstag, 4. Juni 2013 15:14
  • Hallo Karl,

    Ok. ;-)
    Warum deklarierst du etwas, das du dann nicht verwendest?
     

    Der Debugger meldete mir dass die Variable nicht definiert sei, deshalb habe ich sie deklariert.

    enenne das Textfeld um, z.B. in "txtFilter".
    "Filter" heißt schon die Eigenschaft von Formularen und Berichten.
    Wenn man solche Access-Schlüsselbegriffe für eigene Benennungen
    verwendet, gibt das oft seltsame Fehler.
     
    Nach der o.a. Umbenennung:
     
    Me.Filter = "Nachname Like '*" & Me!txtFilter & "*'"
    Me.FilterOn = True
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
     
    Wenn das Ergebnis wieder "klappt aber nicht" ist, wie drückt
    sich das genau aus?
    Kommt eine Meldung, kommt keine aber alle Datensätze
    im Bericht, oder was passiert?
     
    Gibt es das Feld "Nachname" in der Datenherkunft des Berichtes?
     
    Teste auch mal alternativ die Seitenansicht:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewPreview, , Me.Filter

    Habe das Textfeld umbenannt, er öffnet dem Bericht wie zuvor auch, aber er spuckt mir alle Kunden aus. Er gibt keinen Fehler aus. Nach schließen des Berichtes bin ich aber beim richtigen Datensatz im Formular.

    Dienstag, 4. Juni 2013 16:25
  • Am 04.06.2013 schrieb Christian_Huml:

    DoCmd.OpenReport "Aktuelle_Kunden", acViewPreview, , Me.Filter

    Habe das Textfeld umbenannt, er öffnet dem Bericht wie zuvor auch, aber er spuckt mir alle Kunden aus. Er gibt keinen Fehler aus. Nach schließen des Berichtes bin ich aber beim richtigen Datensatz im Formular.

    Klick auf die obige Zeile, drück F9, jetzt im Formular im txtFilter
    den passenden Namen eintragen und den Bericht öffnen lassen. Der
    Debugger bleibt in der Zeile stehen, fahr jetzt mit der Maus
    me.Filter, was wird im Tooltipptext dazu angezeigt? Der richtige
    Datensatz?

    Servus
    Winfried


    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Dienstag, 4. Juni 2013 17:03
  • Klick auf die obige Zeile, drück F9, jetzt im Formular im txtFilter
    den passenden Namen eintragen und den Bericht öffnen lassen. Der
    Debugger bleibt in der Zeile stehen, fahr jetzt mit der Maus
    me.Filter, was wird im Tooltipptext dazu angezeigt? Der richtige
    Datensatz?

    Es wird im Debugger der richtige Datensatz angezeigt.
    Dienstag, 4. Juni 2013 17:13
  • Am 04.06.2013 schrieb Christian_Huml:

    Klick auf die obige Zeile, drück F9, jetzt im Formular im txtFilter
    den passenden Namen eintragen und den Bericht öffnen lassen. Der
    Debugger bleibt in der Zeile stehen, fahr jetzt mit der Maus
    me.Filter, was wird im Tooltipptext dazu angezeigt? Der richtige
    Datensatz?

    Es wird im Debugger der richtige Datensatz angezeigt.

    Lade doch eine verkleinerte, aufs minimum reduzierte Datenbank hoch
    und poste den Link hier, dann kann man sich das ansehen.

    Servus
    Winfried


    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Dienstag, 4. Juni 2013 18:59
  • Lade doch eine verkleinerte, aufs minimum reduzierte Datenbank hoch
    und poste den Link hier, dann kann man sich das ansehen.

    Habe die Datenbank hochgeladen, es wurden Personenbezogene Daten, sowie interne Firmendaten entfernt, da die Datenbank bereits benutzt wurde. Die Datenbank kann unter folgenden Link heruntergeladen werden: http://www.file-upload.net/download-7682264/WPPV7.accdb.html


    Mittwoch, 5. Juni 2013 13:06
  • Hallo, Christian!
     
    Christian_Huml wrote:
    > Lade doch eine verkleinerte, aufs minimum reduzierte Datenbank hoch
    > und poste den Link hier, dann kann man sich das ansehen.
    > Habe die Datenbank hochgeladen, es wurden Personenbezogene Daten,
    > sowie interne Firmendaten entfernt, da die Datenbank bereits benutzt
    > wurde. Die Datenbank kann unter folgenden Link heruntergeladen
     
    Du hast zwei Fehler in der Codezeile für den Berichtsaufruf.
    Es fehlt ein Komma und du hast das Textfeld statt der Filter-Eigenschaft
    verwendet. Die Zeile müsste lauten:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
     
    Kopiere das einfach von hier und ersetze damit deine bisherige Zeile.
     
    Noch 2 Hinweise:
     
    1. Die Dim-Zeile kannst du - wie schon erwähnt - löschen.
     
    2. Du hast das Textfeld "Filtertxt" genannt. Ich hatte dir "txtFilter"
    vorgeschlagen, weil es den Standards entspricht, den "Typ" des
    Steuerelementes als Vorsilbe zu verwenden. Bei "txt..." weiß also jeder
    versierte VBA-Programmierer, dass es sich um ein Textfeld handelt.
     
    --
    Servus
    Karl
    *********
    Access-FAQ: http://www.donkarl.com + AEK16
    Access-Entwickler-Konferenz, 28/29.9. Nürnberg, 19/20.10. Hannover
     
     
     
    Mittwoch, 5. Juni 2013 13:37
  • Du hast zwei Fehler in der Codezeile für den Berichtsaufruf.
    Es fehlt ein Komma und du hast das Textfeld statt der Filter-Eigenschaft
    verwendet. Die Zeile müsste lauten:
     
    DoCmd.OpenReport "Aktuelle_Kunden", acViewReport, , Me.Filter
     
    Kopiere das einfach von hier und ersetze damit deine bisherige Zeile.
     
    Noch 2 Hinweise:
     
    1. Die Dim-Zeile kannst du - wie schon erwähnt - löschen.
     
    2. Du hast das Textfeld "Filtertxt" genannt. Ich hatte dir "txtFilter"
    vorgeschlagen, weil es den Standards entspricht, den "Typ" des
    Steuerelementes als Vorsilbe zu verwenden. Bei "txt..." weiß also jeder
    versierte VBA-Programmierer, dass es sich um ein Textfeld handelt.

    Hallo Karl,

    jetzt geht es. Nächstes mal muss ich mir den Code nochmal genauer anschauen, aber ich bin halt noch nicht so lange in VBA.

    Mittwoch, 5. Juni 2013 14:55