Printscreen knop maken in Access

  • Onderwerp starter Onderwerp starter Risk
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Michel,

Ik heb in mijn rapport bij gebeurtenissen zitten gluren, maar waar zet ik de code achter. Had de hoop bij laden, filter etc, maar helaas.

Tipje van de sluiter ter leering en den vermaeck??

Risk
 
Knippen en plakken. Hij staat compleet zoals hij in het rapport moet.
 
Dat geloof ik. Maar waar zet ik het neer, achter welke deur.

Bij klikken' filter, ??



Risk
 
Maakt niet uit; de code is compleet. Dus in de module van het rapport. Pick a door, any door....
 
Michel,

Dus in de module van het rapport.

Alle gebeurtenisprocedures nagelopen en geprobeert, maar kom geen steek verder. Mijn (bijna wanhopige verzoek) waar zet ik de code neer. Zo dicht bij de haven roep ik om een loods.

Risk
 
Michel,

Tot mijn schrik werkt het. Of ik de juiste volgorde heb gevolgd, even een mening van jou.

Ik heb gedacht dat ik de gebeurtenisprocedure moest vinden die bij "Private Sub Details_Format" hoorde. Die vind je niet.

Ik heb nu "bij openen" e.e.a. onder de streep van

Code:
Private Sub Report_Open(Cancel As Integer)

End Sub

e.e.a. geplakt.

Toen werkte het wel.

Als dit klopt ga ik verder, maar weet nu al dat ik terug moet komen met de een vervolgvraag.

Ik hoor graag.

Risk
 
Als het goed is dan staat de code nu in de Detailsectie bij de gebeurtenis <Bij opmaken>.
Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
Daarom zei ik ook: maakt niet uit hoe je naar het VBA venster van het rapport gaat, de code is compleet. En staat dus na het plakken bij de juiste Gebeurtenis onder de Eigenschappen. Soms zijn de dingen heel simpel :)
 
Michel,

Het staat er. Ik ga verder met knutselen. Kom zeker in deze topic nog eenkeer terug.

Dank tot zover.

Risk
 
Michel,

Ik ben in een formulier aan het veranderen geslagen. Nu kom ik er achter dat Tekst8 al ergens in een formulier gebruik is. Weet even niet waar.

Kan ik de range
Code:
For i = 0 To 8 Step 2
        If i > 0 Then sVelden = sVelden & "|"
anders benoemen bijv. 1000 tot 1020? Dan hoef ik de namen van de velden slechts om te nummeren en spaart mij enorm veel zoekwerk uit. De database die ik maak is steeds laagje voor laagje veranderd en aangepast tot behoorlijk bouwwerk. Tot gisteren had ik voor het onderhavige geen oplossing. Moet dus in een bestaand bouwwerk gaan renoveren.


Risk
 
Kan je doen. Of je bedenkt een betere naam voor 'Tekst'. Zolang de namen maar te nummeren zijn. Maak je zelf namen, dan kun je natuurlijk ook gewoon doornummeren. De Step 2 variant was alleen nodig in mijn voorbeeldje omdat Access blijkbaar niet van oneven nummers houdt als je zelf tekstvakken op een formulier zet. Mijn voorkeur zou dus iets zijn als:
txtInput1, txtInput2, txtInput3, txtInput4, txtInput5 ... txtInput20 en dan deze code:
Code:
    stDocName = "Rapport1"
    For i = 0 To 20 
        If i > 0 Then sVelden = sVelden & "|"
        sVelden = sVelden & Me("txtInput" & i)
    Next i
    DoCmd.OpenReport stDocName, acPreview, OpenArgs:=sVelden
En op het rapport:
Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
Dim sTmp As Variant
    If Me.OpenArgs <> "" Then
        sTmp = Split(Me.OpenArgs, "|")
        For i = LBound(sTmp) To UBound(sTmp)
            Me("txtInput" & i ) = sTmp(i)
        Next i
    End If
End Sub
Scheelt een hoop gereken.
 
Dank als altijd.

Ga met je oplossing stoeien.

Risk
 
Michel,

So far so good. Ik ga weer verder priegelen.

Dank
Risk
 
Michel,

Uiteraard kwam de wagen weer piepend tot stilstand.

Het formulier wordt gefilterd door cboJaar. Dat heb ik geleerd in een vorige vraagstelling.

Inmiddels kan ik de data keurig ineen rapport zetten, maar de filter gaat niet mee. Toen bedacht ik dit een combi van de code van deze topic en de code die ik naar alle tevredenheid gebruikt. (In dit stukje wel wat gestript daar het in een formulier 3 verschillende selecties maakt.):

Code:
Private Sub Knop433_Click()

Dim stDocName As String, sVelden As String
Dim i As Integer
    
    stDocName = "Rapport3"
  
    For i = 0 To 3
        If i > 0 Then sVelden = sVelden & "|"
        sVelden = sVelden & Me("txtInput" & i)
    Next i
    DoCmd.OpenReport stDocName, acPreview, OpenArgs:=sVelden

[I][COLOR="#FF0000"]En hieronder mijn eigen inbreng[/COLOR][/I]

Dim sFilter As String
If Me.cboJaar & "" <> "" Then
    sFilter = "[Jaar]=" & Me.cboJaar
    

   Me.Form.Visible = False


DoCmd.OpenReport stDocName, acViewPreview, , sFilter

End Sub

En toen was boem is ho.

Waar doe ik iets fout??

Risk
 
Ik mis een End If.
 
Michel,

De hele code:

Code:
Option Compare Database

Private Sub cboJaar_AfterUpdate()
Me.Filter = "[Jaar]=" & Me.cboJaar
Me.FilterOn = True
End Sub


[COLOR="#FF0000"]Als ik dit er tussen plaats is het ene foutmelding:

Private Sub cboJaar_AfterUpdate()
Call FilterMaken
End Sub[/COLOR]

Code:
Function FilterMaken()
Dim sFilter As String


If Me.cboJaar & "" <> "" Then
    sFilter = "[Jaar]=" & Me.cboJaar
    
    End If



If sFilter <> "" Then
    Me.Filter = sFilter
    Me.FilterOn = True
Else
    Me.Filter = ""
    Me.FilterOn = False
End If

End Function

Code:
Private Sub Knop433_Click()

Dim stDocName As String, sVelden As String
Dim i As Integer
    
    stDocName = "Rapport3"
  
    For i = 0 To 3
        If i > 0 Then sVelden = sVelden & "|"
        sVelden = sVelden & Me("txtInput" & i)
    Next i
    DoCmd.OpenReport stDocName, acPreview, OpenArgs:=sVelden


[COLOR="#FF0000"]En hieronder mijn eigen inbreng[/COLOR]
Dim sFilter As String
If Me.cboJaar & "" <> "" Then
    sFilter = "[Jaar]=" & Me.cboJaar
    
End If

   Me.Form.Visible = False


DoCmd.OpenReport stDocName, acViewPreview, , sFilter

End Sub


Met behulp van een ander werkend gebeuren dacht ik even snel iets te maken. Middagje verder.

Risk
 
Ik heb eerlijk gezegd geen idee wat je met die codes aan het doen bent; zoals je het hier hebt neergezet zit er weinig logica in. Ik zou zeggen: maak een voorbeeldje, want ik wil e.e.a. wel eens in jouw db zien. Wellicht dat het dan duidelijker wordt.
 
Michel,

Ga een DB-tje maken.

Wordt morgen.

Dank

Risk
 
Michel,

De DB voorbeeld maken is nog niet gelukt. Tijdprobleem. Probeer mijn probleempje/vraag alsnog duidelijker te formuleren:

Ik heb een formulier dat ik via een filter selecteer. Jaar 2010 2011 2012 3en 2013. Die filter werkt perfect.

Met de uitkomst van dat filter worden op het formulier berekeningen uitgevoerd die managementinfo genereren die niet behoeven te worden opgeslagen. Zie het als een kladblaadje.

Met de code die jij mij hebt gestuurd werkt het overbrengen naar een rapport inmiddels perfect.

Nu wil ik het filter jaar met de uitkomst in het rapport zetten. De code die ik gebruik (vanuit een andere vraag ooit gekregen van jou) voeg ik bij. Ik heb alleen maar het jaar nodig, hoe streep ik die er uit. Bij IF Me Jaar komt ook de medewerker naar voren. Ik snap even niet hoe ik e.e.a. kan strippen zonder de werking te niet te doen.

Code:
Option Compare Database

Private Sub cboMedewerker_AfterUpdate()
Call FilterMaken
End Sub


Private Sub cboKenteken_AfterUpdate()
Call FilterMaken
End Sub

Private Sub cboJaar_AfterUpdate()
Call FilterMaken
End Sub


Function FilterMaken()
Dim sFilter As String


If Me.cboJaar & "" <> "" Then
    sFilter = "[Jaar]=" & Me.cboJaar
    If Me.cboMedewerker & "" <> "" Then
        sFilter = sFilter & " AND [Medewerker] = '" & Me.cboMedewerker & "'"
    End If
Else
    If Me.cboMedewerker & "" <> "" Then
        sFilter = "[Medewerker] = '" & Me.cboMedewerker & "'"
    End If
End If

If Me.cboKenteken & "" <> "" Then
    If sFilter <> "" Then sFilter = sFilter & " AND "
    sFilter = sFilter & "[Kenteken] = '" & Me.cboKenteken & "'"
End If


If sFilter <> "" Then
    Me.Filter = sFilter
    Me.FilterOn = True
Else
    Me.Filter = ""
    Me.FilterOn = False
End If

End Function




Private Sub Knop405_Click()

stDocName = "Testformulier"
Dim sFilter As String
If Me.cboJaar & "" <> "" Then
    sFilter = "[Jaar]=" & Me.cboJaar
    If Me.cboVestiging & "" <> "" Then
        sFilter = sFilter & " AND [Medewerker] = '" & Me.cboMedewerker & "'"
    End If
Else
    If Me.cboMedewerker & "" <> "" Then
        sFilter = "[Medewerker] = '" & Me.cboMedewerker & "'"
    End If
End If

If Me.cboKenteken & "" <> "" Then
    If sFilter <> "" Then sFilter = sFilter & " AND "
    sFilter = sFilter & "[Kenteken] = '" & Me.cboKenteken & "'"
  
End If
   Me.Form.Visible = False


DoCmd.OpenReport stDocName, acViewPreview, , sFilter

End Sub

Hoor graag en doe wederom een beroep op je kennis.

Risk
 
Als je alleen op Jaar wilt filteren, dan zou dit genoeg moeten zijn:

Code:
Private Sub cmdJaar_Click()
    If Me.cboJaar & "" <> "" Then
        sFilter = "[Jaar]=" & Me.cboJaar
    End If
End Sub
Daar zou ik dan een andere knop voor maken, want de keuzelijst moet natuurlijk het hele filter aanroepen.
 
Michel,

Na uren vruchteloos knutselen kom ik niet verder.

Het formulier filtert als een malle. De variabele gegevens gaan dankzij een door jou gegeven oplossing keurig naar het rapport (Rapport3 in de code). Echter de selectie van het jaar dat keurig op het formulier staat, helaas het filter naar het rapport werkt niet. Heb alles wat ik denk te weten toegepast (uit de code die ik heb meegestuurd),maar helaas. Krijg compileerfout te zien etc.

Waar ben ik wat vergeten:
Code:
Option Compare Database


Private Sub cboJaar_AfterUpdate()
Call FilterMaken
End Sub
Function FilterMaken()
Dim sFilter As String

If Me.cboJaar & "" <> "" Then
    sFilter = "[Jaar]=" & Me.cboJaar
    End If
If sFilter <> "" Then
    Me.Filter = sFilter
    Me.FilterOn = True
Else
    Me.Filter = ""
    Me.FilterOn = False
End If
End Function

[COLOR="#FF0000"]Het formulier[/COLOR]

Private Sub Knop433_Click()
If Me.cboJaar & "" <> "" Then
        sFilter = "[Jaar]=" & Me.cboJaar
    End If


Dim stDocName As String, sVelden As String
Dim i As Integer
    
    stDocName = "Rapport3"
  
 
   Me.Form.Visible = False
    For i = 0 To 3
        If i > 0 Then sVelden = sVelden & "|"
        sVelden = sVelden & Me("txtInput" & i)
    Next i
    DoCmd.OpenReport stDocName, acPreview, OpenArgs:=sVelden
    
End Sub

Heb het stellige gevoel dat er iets bij Private Sub Knop433_Click() bij moet. Zoals gezegd uit de eerder gezonden code met DIM zitten stoeien, maar kwam niet verder.

Dank als altijd. Als ik dit aan d epraat krijg dan is de database eindelijk werkbaar klaar.

Risk
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan