Opslag pdf met bepaalde naam

Status
Niet open voor verdere reacties.

GerbenDenker

Gebruiker
Lid geworden
29 mrt 2013
Berichten
74
Hallo,

Het heeft gewerkt, maar de opslag van de pdf met naam, lukt niet (meer).

Ik selecteer op een formulier vanuit een keuzelijst een deelnemer van het toernooi (= het veld DeelNaam).
De toernooidatum staat ook al vermeld op het formulier ( = veld Toernooidatum).
Op deze manier print ik het wedstrijdbriefje van de individuele deelnemer (= rapport Wedstrijdbrief individuele deelnemer (naam)) .


Opslag als pdf:
Bedoeling is dat hetzelfde rapport opgeslagen wordt in dezelfde map als waarin het wedstrijdprogramma staat.
De naam wordt dus (voorbeeld) 2014-06-02-J.Groothof.pdf

Wat is er fout aan de code ?
(het werkte wel..)



Code:
   Dim folder As String
    Dim strDocName As String
    Dim strWhere As String

On Error GoTo Opslaan_cmdReportOpslaan


Opslaan_cmdReportOpslaan:
    strDocName = "Wedstrijdbrief individuele deelnemer (naam)"
    strWhere = "[Deelnaam]='" & Me!DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder & Format$(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me!DeelNaam & ".pdf"

    
    Dim stDocName As String
    stDocName = "Wedstrijdbrief individuele deelnemer (naam)"
    DoCmd.OpenReport stDocName, acPreview
End Sub

Ik ben benieuwd en natuurlijk al weer veel dank voor de hulp.
 
Ik zie 2 keer dezelfde declaratie, wat natuurlijk 1 keer teveel is. En je On Error? Die gaat niet naar een Foutroutine, maar naar het exporteren zelf! Lijkt mij niet de bedoeling, want nu kan hij gaan lussen tot je een ons weegt. Want elke keer zal hij bij een fout opnieuw beginnen, en uiteraard dezelfde fout tegen gaan komen. En je declareert een filter (strWhere) waar je verder niks mee doet!
Maar je zegt dat deze code wel gewerkt heeft, en nu niet meer. Dat duidt er op dat er iets is veranderd, want uit zichzelf zal een computer dat niet doen.
 
Laatst bewerkt:
Bedankt, maar nu ga ik twijfelen aan mezelf of het wel goed gewerkt heeft...

Je opmerkingen over declaratie en lussen en zo, gaat m'n pet te boven, zoveel verstand heb ik er ook niet van. (sorry)

Zou jij het kunnen verbeteren ? Dat zou wel heel fijn zijn !

Vriendelijk dank !
 
Je hebt twee keer de regel Dim stDocName As String in de code staan. Doorgaans mag je een variabele maar één keer declareren, anders gaat Access piepen. Dus daar kan de fout liggen. Verder bedoel ik met lussen: je hebt een subroutine gemaakt die <Opslaan_cmdReportOpslaan> heet. Daarboven staat de regel: On Error GoTo Opslaan_cmdReportOpslaan. Dus wat gebeurt er als er een fout wordt geconstateerd? Dan gaat de procedure verder op de plek die je aangeeft, en dat is: Opslaan_cmdReportOpslaan. En waar zit de fout die hij tegen kan komen? Precies: in Opslaan_cmdReportOpslaan! En dus krijg je een loop, want als de code begint is er uiteraard nog geen fout, daarna komt de procedure in Opslaan_cmdReportOpslaan, komt daar een fout tegen, en gaat vervolgens terug naar het begin van Opslaan_cmdReportOpslaan en komt dan uiteraard dezelfde fout nog een keer tegen, en dat gaat door tot je op <Break> drukt.

Code:
Dim folder As String, strDocName As String, strWhere As String
On Error GoTo Foutje

Opslaan_cmdReportOpslaan:
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder _
        & Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
    strDocName = "Wedstrijdbrief individuele deelnemer (naam)"
    DoCmd.OpenReport stDocName, acPreview, , strWhere
    Exit Sub

Foutje:
    MsgBox Err.Number & " -  " & Err.Description
Het enige dat ik niet heb aangepast, is de variabele <folder> die je wél declareert, maar niet vult. En vervolgens doodleuk gebruikt in je export :).
 
Dankje,
Het werkt niet, de melding Compileerfout: "Een variabele is niet gedefinieerd" verschijnt.

Bij de code: DoCmd.OpenReport stDocName, acPreview, , strWhere wordt de fout weergegeven.

Wat moet daar dan staan ?


En wat bedoel je met: variabele <folder> die je wél declareert, maar niet vult. En vervolgens doodleuk gebruikt in je export ...
Ik wil de pdf gewoon in de huidige map opslaan...

Zou je er naar willen kijken ?
 
Je had twee keer dezelfde variabele gedeclareerd dacht ik, maar ze waren dan toch verschillend :). Je had dus strDocName en stDocName. Ik heb er één weggehaald, maar nét de verkeerde. Het is belangrijk dat je foutmeldingen leert begrijpen, want ze geven meestal goed aan waar de fout zit. In dit geval is die melding duidelijk: de variabele is niet gedeclareerd. En dat klopt: je gebruikt stDocName, en je declareert strtDocName. Ofwel een r verwijderen, ofwel er één toevoegen dus.
En wat betreft die folder: daar gebeurt min of meer iets vergelijkbaars mee. Hij wordt gedeclareerd, maar verder niet gevuld. Dus folder = leeg. En dan heb je dus niks. Wil je de huidige map in de variabele hebben, dan moet je deze regel toevoegen:
Code:
folder = CurrentProject.Path
Kun je overigens zelf ook min of meer opzoeken, als je weet dat een pad vertaalt naar Path. En als je de cursor on het woord Path zet (want op zichzelf is Path fout) en op F1 drukt, krijg je keurig uitgelegd hoe je Path moet gebruiken. Zo hebben wij het ook geleerd :).
 
Dank je. Ik snap er niets van.
Probeer het te begrijpen, maar er volgt nog steeds een foutmelding en er gebeurt verder weinig.
De r erbij gezet... en het pad.
Staat dat dan verkeerd ?


Code:
Dim folder As String, strDocName As String, strWhere As String
On Error GoTo Foutje

Opslaan_cmdReportOpslaan:
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder = CurrentProject.Path _
        & Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
    strDocName = "Wedstrijdbrief individuele deelnemer (naam)"
    DoCmd.OpenReport strDocName, acPreview, , strWhere
    
    Exit Sub

Foutje:
    MsgBox Err.Number & " -  " & Err.Description
 
Ofwel je vult de variabele folder voordat je de Docmd opdracht uitvoert, ofwel je vervangt folder. Jouw variant is dus de verkeerde variant :).
Code:
    folder = CurrentProject.Path
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder _
        & Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
of
Code:
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, CurrentProject.Path _
        & Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
 
Bedankt, ik snap er echt helemaal niets van.
Zoveel weet ik er ook niet van.

Ik heb aldus de code opgemaakt:
Code:
Private Sub Knop58_Click()
Dim folder As String, strDocName As String, strWhere As String
On Error GoTo Foutje

Opslaan_cmdReportOpslaan:
folder = CurrentProject.Path
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder _
        & Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
    DoCmd.OpenReport strDocName, acPreview, , strWhere
    
    Exit Sub

Foutje:
    MsgBox Err.Number & " -  " & Err.Description
End Sub

En dan verschijnt de melding: 2487 Het argument Objecttype voor de actie of methode is blanco of ongeldig...

Ik begrijp er echt niets meer van; kan je de code in zijn geheel weergeven zodat ik niets meer hoef aan te passen en het zo kan kopiëren in de gebeurtenis (opdrachtknop) ?
 
Ik denk dat er nog een backslash achter moet:
Code:
folder = CurrentProject.Path & "\"
Kun je zien als je in de foutopsporingsmodus de cursor boven de variabelen houdt. Als de backslash ontbreekt, wordt de foldernaam gekoppeld aan de bestandsnaam, en die map bestaat uiteraard niet. En ik vermoed dat er een komma achter folder ontbreekt.
Code:
Private Sub Knop58_Click()
Dim folder As String, strDocName As String, strWhere As String
On Error GoTo Foutje

folder = CurrentProject.Path & "\"
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder, Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
    DoCmd.OpenReport strDocName, acPreview, , strWhere
    Exit Sub

Foutje:
    MsgBox Err.Number & " -  " & Err.Description
End Sub
 
Jammer, er verschijnt weer een foutmelding...
Fout 2489 - Het gegevens type van een expressie die u hebt opgegeven, is ongeldig voor een van de argumenten.

Is dit een te moeilijk iets...?
 
Ik heb nog steeds je db niet, dus ik kan dat hier vandaan niet zien. Met een voorbeeldje erbij is het zo opgelost.
 
Ok, moest de base een beetje uitkleden, maar gelukt.

Wil je eens bekijken waarom de ene knop wel werkt (wat volgens je tips etc, niet mogelijk kan/moet zijn) en waarom de andere knop, met de door jou geadviseerde regels, niet werkt ?

Ik kom er niet meer uit...

Bekijk bijlage WED.zip

Ik ben benieuwd....
 
Sowieso is dit natuurlijk erg onlogisch:
Code:
folder = CurrentProject.Path
MkDir folder
Een map die bestaat (en die lees je uit met CurrentProject.Path) kun je niet aanmaken. Want hij bestaat al. Daarnaast moet je bij Path nog een backslash toevoegen.
Code:
folder = CurrentProject.Path & "\"
Of je moet dat hier doen:
Code:
    folder = CurrentProject.Path 
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder & "\" & Me!DeelNaam & ".pdf"
 
Wat betreft je preview op het rapport: je wilt filteren op het veld Deelnaam, maar dat zit niet in het rapport. En dan kun je daar uiteraard ook niet op filteren.
 
Begrijp ik niet, want waarom werkt die ene knop (knop47) dan wel ?
Die filtert DeelNaam ook.
 
Laatst bewerkt:
Omdat knop47, hoe onlogisch de opdrachten ook zijn, geen fouten bevat en Knop58 nog wel. Al was het maar dat je de naam van het rapport niet meegeeft.
Code:
Private Sub Knop58_Click()
Dim folder As String, strDocName As String, strWhere As String
On Error GoTo Foutje

    folder = CurrentProject.Path & "\"
    strDocName = "Wedstrijdbrief individuele deelnemer (naam)"
    strWhere = "[Deelnaam]='" & Me.DeelNaam & "'"
    DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, _
        folder & Format(Me.Toernooidatum, "yyyy-mm-dd") & "-" & Me.DeelNaam & ".pdf"
    DoCmd.OpenReport strDocName, acPreview, , strWhere
    Exit Sub

Foutje:
    MsgBox Err.Number & " -  " & Err.Description
End Sub
Deze werkt.
 
Nou, knop 47 werkt dus wel, zij het dat je het huidige pad niet kan laten werken. (folder = CurrentProject.Path)
Een ingevuld pad en dus bestaand pad werkt wel. Vreemd...

En knop 58 werkt bij mij niet, want de melding verschijnt:
Parameterwaarde opgeven,
DeelNaam, met daaronder een balk om iets in te voeren.

Kortom... ik snap het ECHT niet.
 
Zoals ik al zei: het veld DeelNaam bestaat niet in je rapport. En dat is die foutmelding. Maar de huidige code (die ik hiervoor gepost heb) maakt echt wel een pdf in de bestaande map Currentproject.Path. Moet-ie bij jou dus ook doen. Ik heb 'm letterlijk gekopieerd nadat ik 'm heb uitgetest. Ik doe de gegenereerde pdf erbij. See for yourself!
 

Bijlagen

**

Het is opgelost. Laatste fout had ik zelf moeten ontdekken.
Beetje zware klus dit keer, maar natuurlijk heel erg bedankt !
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan