Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Datenblattansicht über Spaltenköpfe filtern und an Bericht
zurück: Berechnetes Textfeld in Tabelle schreiben weiter: Step by Step Formular Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Mike2
MS Office Standard - minimal VBA


Verfasst am:
10. Mai 2012, 12:37
Rufname:

Datenblattansicht über Spaltenköpfe filtern und an Bericht - Datenblattansicht über Spaltenköpfe filtern und an Bericht

Nach oben
       Version: Office 2010

Hallo Zusammen,

ich würde gerne ein Formular in der Datenblattansicht über die Spaltenköpfe filtern und diesen Filter dann an einen Bericht weiter geben.

Das funktioniert auch mit Unterstützung aus dem Forum:
Code:
Public Function get_Filter() As String
    Dim strFilter
 
    If Forms![frm_Navi]![Navigationsunterformular].Form![MeinUnterformular].Form.FilterOn Then
        strFilter = Forms!frm_Navi!Navigationsunterformular.Form![MeinUnterformular].Form.Filter
        get_Filter = Replace(strFilter, "[MeinUnterformular].", "")
    End If
End Function

Private Sub btn_rpt1_Click()
    DoCmd.OpenReport "MeinReport", acViewReport, , get_Filter(), acNormal
End Sub
Es gibt in dem Formular allerdings auch Kombinationsfelder, die nicht die gebundene Spalte anzeigen (die ID), sondern erst die zweite Spalte mit z. B. dem Namen.
Wenn ich in dieser Spalte nach dem Namen filtere, dann wird auch der Name im und eben nicht der gebundene Wert (die ID) weitergegeben. Dadurch wird der Wert in der zugrundeliegenden Abfrage auch nicht gefunden.
Wie stelle ich es an, dass trotzdem der Filter richtig übergeben wird?
Habt ihr einen Vorschlag?
Vielen Dank
Gruß
Michael
MissPh!
Office-VBA-Programmiererin


Verfasst am:
10. Mai 2012, 19:17
Rufname:
Wohnort: NRW


AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo Michael,

du meinst also, wenn du ein Kombifeld mit zwei Spalten hast, ID und Text, wobei die ID als erste Spalte zwar die gebundene ist, aber nicht angezeigt wird, dass beim Filtern der Text verwendet wird?
Wie kann das gehen?

Und wenn du in der Abfrage für den Bericht die Text-Datenfelder ebenfalls verfügbar machst, wäre das evtl. eine Lösung?

_________________
Gruß MissPh!
Mike2
MS Office Standard - minimal VBA


Verfasst am:
11. Mai 2012, 08:36
Rufname:

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo MissPh!

Vielen Dank für die Nachfrage. Dabei musste ich nämlich feststellen, dass es gar nicht die Übergabe an den Bericht ist, sondern der Export nach Excel, bei dem das Problem entsteht und das hängt vermutlich mit dem VBA Code zusammen. Den bei dem oben genannten Berichtsbutton funktioniert es mit der Filterung über den Spaltenkopf.

Also das Kombifeld besteht aus ID und Text. Im Datenblatt ist die Spalte mit dem Kombifeld, hier wird der Text angezeigt und hier filtere ich z. B. nach dem Text über den Spaltenkopf.

Wenn ich nun den Button für den Excel-Export drücke, wird eben nicht die ID übergeben, sondern der Text und der wird logischerweise nicht in der Abfrage des Exportes gefunden. Also gibt es keine Werte nach dem Export.

Hier der Code für den Excel-Export (auch aus dem Forum)
Code:
Private Sub btn_excel_Click()
    Const tmpAbfrage = "qrytemp" ' Abfrage wird automatisch erzeugt und gelöscht
    Dim sSQL As String
    Dim qdf As DAO.QueryDef
    Dim strFilter As String
       
    If get_Filter() <> "" Then
        strFilter = " WHERE" & get_Filter()
    End If
    sSQL = "SELECT * " & _
            " FROM qry_Projektübersicht" & strFilter
Debug.Print sSQL
    If Len(sSQL) = 0 Then
        MsgBox "Keine Datenherkunft"
        Exit Sub
    End If
' --------------------------------------
' ----- evtl. alte Abfrage löschen -----
' --------------------------------------
    On Error Resume Next
    DoCmd.DeleteObject acQuery, tmpAbfrage
    On Error GoTo 0
    Set qdf = CurrentDb.CreateQueryDef(tmpAbfrage, sSQL)
    DoCmd.OutputTo acOutputQuery, tmpAbfrage, "ExcelWorkbook(*.xlsx)", "" _
                 , True, "", , acExportQualityPrint
    DoCmd.DeleteObject acQuery, tmpAbfrage
End Sub
Der Filterausdruck erscheint so:
Code:
SELECT *  FROM qry_Projektübersicht WHERE ([Lookup_cbo__Projektverantwortlicher].[N]="Nachname, Vorname")
Vielen Dank

Gruß Michael
Nachtrag: Mike2 am 11. Mai 2012 um 09:03 hat folgendes geschrieben:
Hallo Nochmal,

habe mich jetzt nochmal mit dem Filter beschäftigt.

Dazu habe ich in die zugrundeliegende Abfrage, wie von dir angedeutet, noch eine Spalte mit dem Text eingefügt (auch wenn ich diese dann in der Datenblattansicht nicht anzeigen lasse).

Dann hab ich, so wie du mir es schon beim ersten getFilter gezeigt hast, noch einen zweiten getFilter angelegt, der ebenso wie beim ersten jetzt die Zeichenfolge mit dem Lookup entfernt. Dann wird auch die Spalte in der Abfrage gefunden und gefiltert.

Frage noch: Kann man die Replacefunktion so nutzen, dass auch andere Kombifelder dadurch berücksichtigt werden?

Also dass die Replacefunktion mit Platzhaltern arbeitet? ([Lookup_***].", ""),
Code:
Replace(strFilter, "[Lookup_cbo__Projektverantwortlicher].", "")
Replace(strFilter, "[Lookup_cbo__Bereichsverantwortlicher].", "")
...
Danke für deinen Anregungen und Unterstützung.

Ein schönes Wochenende

Michael
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Mai 2012, 09:40
Rufname:
Wohnort: NRW

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo,

mit Replace kannst du das nicht machen, aber du könntest mit Instr suchen und mit Mid den String verkürzen.
Oder auch Replace damit kombinieren...

_________________
Gruß MissPh!
Mike2
MS Office Standard - minimal VBA


Verfasst am:
11. Mai 2012, 10:19
Rufname:


AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo,

vielen Dank für den Hinweis.

Habe es jetzt mal mit folgendem Code versucht. Leider funktioniert er nur, wenn auch nur in einer Spalte gefiltert wurde, weil die zusätzlichen Werte ("And ***** usw.) dann nicht mehr ausgeschnitten werden. Und dafür noch alle Möglichkeiten zu definieren sprengt wohl den Rahmen.

Das ganz über die Spaltenköpfe zu filtern und zu übergeben ist doch wohl etwas komplexer als ich mir gedacht hatte.
Code:
Public Function get_Filter() As String
    Dim strFilter As String
    Dim i As Integer, j As Integer
   
    With Forms![frm_Navi]![Navigationsunterformular].Form![ufrm_Projektübersicht].Form
        If .FilterOn Then
            strFilter = .Filter
            i = InStr(1, strFilter, ".") + 1               'ausschneiden VON
            j = InStr(1, Mid(strFilter, i), "%'") + 1       'BIS
            get_Filter = "(" & Mid(Mid(strFilter, i), j)
        End If
    End With
End Function
So sieht der Filter vor und nach dem Ausschneiden aus:
Code:
vorher:
((([Lookup_cbo__Bereichsverantwortlicher].[N_Bereich]="Nachname1, Vorname1"))) AND ([Lookup_cbo__Projektverantwortlicher].[N_Projekt]="Nachname2, Vorname2")

nachher:
([N_Bereich]="Nachname1, Vorname1"))) AND ([Lookup_cbo__Projektverantwortlicher].[N_Projekt]="Nachname2, Vorname2")

Gruß Michael
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Mai 2012, 11:08
Rufname:
Wohnort: NRW

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo Michael,

ich hätte hierzu folgenden Vorschlag für dich:
Code:
Public Function get_Filter(strFilter) As String
    Dim i, j, strEx
    i = InStr(strFilter, "[LookUp_")
    Do While i > 0
        j = InStr(Mid(strFilter, i), "].") + 1
        strEx = Mid(strFilter, i, j)
        strFilter = Replace(strFilter, strEx, "")
        i = InStr(strFilter, "[LookUp_")
    Loop
    get_Filter = strFilter
End Function
Aufruf:
Code:
    If Forms![frm_Navi]![Navigationsunterformular].Form![ufrm_Projektübersicht].Form.FilterOn Then
        strFilter = get_Filter(Forms!frm_Navi!Navigationsunterformular.Form![ufrm_Projektübersicht].Form.Filter)
    End If

_________________
Gruß MissPh!
Mike2
MS Office Standard - minimal VBA


Verfasst am:
11. Mai 2012, 11:47
Rufname:

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo MissPh!,

dass ist echt super. Funktioniert!!!

Und dann kommt schon wieder ein Gedanke dazu:
Könnte man das jetzt noch, um das ganze zu vereinheitlichen auch noch mit einer Oder-Bedingung verbinden, so dass auch die Sache mit dem Unterformular in diese Funktion eingebaut werden kann?
Code:
     i = InStr(strFilter, "[LookUp_")
     i = InStr(strFilter, "[ufrm_")
Habe schon was ausprobiert, aber ohne Ergebnis.

Vielen, vielen Dank für die jetzt laufende Funktion.

Gruß
Michael
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Mai 2012, 11:56
Rufname:
Wohnort: NRW

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Kannst du mal ein Beispiel zeigen, wie sieht der Filterstring dann aus? Und wieso und in welchen Fällen wird der Formular da eingestellt?

...ich denke, dazu wirst du eine zweite Schleife einsetzen müssen, das lässt sich ja nicht mit Oder kombinieren.
Du musst schon konkret vorgeben wonach du suchst.

Oder so vielleicht:
Code:
Public Function get_Filter(strFilter) As String
    Dim i, j, strEx
    i = InStr(strFilter, "[LookUp_")
    If i = 0 Then i = InStr(strFilter, "[ufrm_")
    Do While i > 0
        j = InStr(Mid(strFilter, i), "].") + 1
        strEx = Mid(strFilter, i, j)
        strFilter = Replace(strFilter, strEx, "")
        i = InStr(strFilter, "[LookUp_")
        If i = 0 Then i = InStr(strFilter, "[ufrm_")
    Loop
    get_Filter = strFilter
End Function

_________________
Gruß MissPh!
Mike2
MS Office Standard - minimal VBA


Verfasst am:
11. Mai 2012, 12:06
Rufname:

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo,

Wenn ich jetzt in der Datenblattansicht in einer Spalte filtere, die ganz normal aus einem Wert/String besteht (eben kein Kombifeld), dann wird vorne im Ausdruck der Formularname mitgegeben.

Mit der folgenden Funktion erstelle ich den endgültigen Filter und da hattest du mir ja mit der ReplaceFunktion geholfen.

Das funktioniert auch mit der jetzt davor laufenden InStr Funktion ganz prima.

Mein Gedanke war, auch den String mit dem Unterformular direkt in der InStr Funktion zu unterbinden, so dass es dann auch egal wird, aus welchem Unterformular der Wert kommt. Und ich in der folgenden Funktion auf die Replacezeile verzichten kann.
Code:
Public Function get_Filter() As String
    Dim strFilter

    If Forms![frm_Navi]![Navigationsunterformular].Form![ufrm_Projektübersicht].Form.FilterOn Then
        strFilter = get_FilterR(Forms!frm_Navi!Navigationsunterformular.Form![ufrm_Projektübersicht].Form.Filter)
        get_Filter = Replace(strFilter, "[ufrm_Projektübersicht].", "")
    End If
End Function
Code:
((([N_Bereich]="Nachname1, Vorname1"))) AND ([ufrm_Projektübersicht].[Projektbezeichnung]="Projekt4711"

Gruß

Michael
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Mai 2012, 12:44
Rufname:
Wohnort: NRW

AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

siehe oben (Code nachträglich ergänzt)
_________________
Gruß MissPh!
Mike2
MS Office Standard - minimal VBA


Verfasst am:
11. Mai 2012, 12:51
Rufname:


AW: Datenblattansicht über Spaltenköpfe filtern und an Beric - AW: Datenblattansicht über Spaltenköpfe filtern und an Beric

Nach oben
       Version: Office 2010

Hallo MissPh!,

ja, schon gesehen und Änderung eingebaut.
Dafür nochmal ein ganz herzliches Dankeschön für deine Unterstützung.
So wie es aussieht funktioniert es prima.
Damit hast du mich einen riesen Schritt vorwärtsgebracht und ich habe wieder eine neue Funktion kennengelernt.

Ein schönes Wochenende

Gruß

Michael
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Unterschiedliche Ergebnisse Abfrage <--> Bericht ?!? 0 ..::noOb::.. 718 21. Jun 2006, 11:18
..::noOb::.. Unterschiedliche Ergebnisse Abfrage <--> Bericht ?!?
Keine neuen Beiträge Access Tabellen & Abfragen: Sortierung in Bericht nach berechnetem Feld möglich ? 1 J. Schreiber 1331 12. Apr 2006, 08:36
stargazer01 Sortierung in Bericht nach berechnetem Feld möglich ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, Bericht erstellen 1 bama 1324 15. März 2006, 16:08
LaSweeta Abfrage, Bericht erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage über Drop-Down-Felder filtern 13 snatchmo66 998 02. Jan 2006, 11:48
Willi Wipp Abfrage über Drop-Down-Felder filtern
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage in Bericht 1 Fabs 2846 08. Dez 2005, 21:38
jens05 Parameterabfrage in Bericht
Keine neuen Beiträge Access Tabellen & Abfragen: Access Tabelle + Abfrage + Bericht + Formular 1 Todesengel-m 4249 10. Nov 2005, 16:31
stpimi Access Tabelle + Abfrage + Bericht + Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Import Filtern - Mehrfache Namen auslassen 2 PrinceArthas 713 29. Sep 2005, 21:33
PrinceArthas Import Filtern - Mehrfache Namen auslassen
Keine neuen Beiträge Access Tabellen & Abfragen: Daten filtern mit 2 Kobiboxen 1 Sovi79 604 29. Aug 2005, 15:49
rita2008 Daten filtern mit 2 Kobiboxen
Keine neuen Beiträge Access Tabellen & Abfragen: in abfrage nach aktuellem Jahr filtern 7 heirnele 676 22. Jul 2005, 09:17
Willi Wipp in abfrage nach aktuellem Jahr filtern
Keine neuen Beiträge Access Tabellen & Abfragen: Problem beim Bericht oeffnen, wenn Parameter von Formular 11 Gast1 993 21. Jul 2005, 15:28
Nindigo Problem beim Bericht oeffnen, wenn Parameter von Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Filtern nach den letzten xy Datensätzen 1 BML77 507 25. Jun 2005, 20:03
jens05 Filtern nach den letzten xy Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: im Bericht werden "falsche" Daten angezeigt 19 Sonic 1596 07. Jun 2005, 08:14
Sonic im Bericht werden "falsche" Daten angezeigt
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript