Gefilterde exporteren naar Excel

Status
Niet open voor verdere reacties.
Da's raar, want bij mij doet jouw versie het wél. Al moest ik het veld [Dichtheid] verwijderen uit de code, omdat dat niet in de tabel zit.
 
Goedenavond,

Ik heb de oplossing niet, ik reageer alleen even om te melden dat op mijn PC het voorbeeld van Michel (#17) ook niet werkt. Deze constructie van filteren gebruik ik ook in meerdere programma's (komt ook van Michel). Meestal werkt het goed, alleen als je een combinatie van een tekstveld en een numeriek veld hebt dan wil het nog wel eens fout gaan. Als ik dan in het numerieke veld met een * begin, gaat het wel.

Misschien helpt dit met het vinden van de oplossing, ik ben ook nieuwsgierig.

Ge. Jan
 
Wat ben ik toch een gelukkig man; ook het filteren met getallen gaat in het bestandje van Daneron bij mij perfect :). Ik kan verder dus weinig aan hulp bieden, want de techniek werkt bij mij (zelfs op meerdere pc's) perfect. Ik kan de 'fout' dus niet reproduceren.
 
Is dit de enigste manier? Geen idee, maar het is wel de beste. En zoals ik al zei: bij mij werkt het altijd en overal. Ik gebruik hem bij mezelf, op het werk (bij verschillende collega's onder verschillende accounts) en bij klanten. Nooit problemen mee.
De vraag is dus niet of er iets aan de code mankeert, maar waar het bij jou fout gaat. Het filmpje was bij mij dermate onscherp, dat ik daar niks aan kon zien trouwens. Hier de code zoals die dus echt moet werken in jouw laatste voorbeeld:
Code:
    strSQL = "SELECT Produkt, Klasse, Dikte, Breedte, Lengte, Category, Stap, Hardheid FROM Produkten"
    Set qDef = CurrentDb.QueryDefs(Me.RecordSource)
    DoCmd.OutputTo acOutputQuery, Me.RecordSource, acFormatXLS, CurrentProject.Path & "\" & "test.xls"
Deze variant exporteert de hele ongefilterde query. Ik heb er, voor de test, nu een xls bestand van gemaakt, wellicht zit daar nog een probleem. Maar deze variant zou dus altijd een export moeten maken.
Code:
    sfilter = " WHERE " & Replace(Me.Filter, "[" & Me.RecordSource & "].", "")
    qDef.SQL = strSQL & sfilter
    DoCmd.OutputTo acOutputQuery, Me.RecordSource, acFormatXLSX, CurrentProject.Path & "\" & "Gefilterd.xlsx"
    qDef.SQL = strSQL
Deze variant voegt het formulierfilter toe aan de query. Hier zou eventueel wat fout kunnen gaan, als er rare zaken in je query zitten. Maar in beginsel is je formulier op dezelfde query gebaseerd als de code nu uitleest, dus daar zou niks fout hoeven te gaan. Eventueel kun je de code nog zodanig aanpassen dat je eerst de code van de SQL aanpast, en dan het formulier opnieuw inleest op basis van de aangepaste query. In dat geval zul je de reset knop ook aan moeten passen, want als je de query aanpast en niet terugzet (wat nu wel gebeurt) dan hou je de selectie op het formulier staan. Die aanpassing, die je nog zou kunnen proberen, is dan deze:
Code:
    DoCmd.OutputTo acOutputQuery, Me.RecordSource, acFormatXLS, CurrentProject.Path & "\" & "test.xls"
    Set qDef = CurrentDb.QueryDefs("qTemp")
    strSQL = "SELECT Produkt, Klasse, Dikte, Breedte, Lengte, Category, Stap, Hardheid FROM Produkten " _
        & "WHERE " & Replace(Me.Filter, "[" & Me.RecordSource & "].", "")
    qDef.SQL = strSQL
    'Tijdelijke query toewijzen
    With Me
        .RecordSource = "qTemp"
        .Requery
        .Filter = ""
        .FilterOn = False
    End With
    DoCmd.OutputTo acOutputQuery, Me.RecordSource, acFormatXLSX, CurrentProject.Path & "\" & "Gefilterd.xlsx"
    'Terugzetten van query
    With Me
        .RecordSource = "Query1"
        .Requery
        .Filter = ""
        .FilterOn = False
    End With
Je maakt dan eerst een kopietje van Query1 die je qTemp noemt (maakt niet uit trouwens welke query je kopieert; de SQL wordt toch overschreven). En de rest van de code doet dan het werk.
 
Eureka.. in gegevensblad weergave werkt het wel :d

Heb het op diverse pc's en office versies geprobeerd maar krijg het in formulierweergave niet werkend, zodoende nog niet opgelost maar kan nu in ieder geval verder.
 
Laatst bewerkt:
Ik snap je probleem echt niet, want ik werk dus nooit in Gegevensblad weergave, en het filter werkt dus echt wel in een doorlopend formulier. Bovendien maakt de code gebruik van de data en die komt uit de tabel, het formulier heeft daar helemaal niks mee te maken. Je zit dus wat mij betreft met een niet-bestaand probleem waar een niet-bestaande oplossing voor moet worden bedacht. :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan