Parameter vervangen door een opzoekformuliertje

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

Risk

Gebruiker
Lid geworden
5 jul 2010
Berichten
275
Forum,

Dit forum heeft een nadeel, je wilt steeds meer ontdekken en toepassen in je database. Geweldig. Zo kwam ik via een vraag in dit forum op mijn eigen probleem. Keuze via een parameter. Met behulp van de antwoorden van Octafish ben ik gaan knutselen binnen mijn eigen DB. Ik heb het voor elkaar gekregen een keuzeformulier te maken die een rapport filtert! Ik weer trots.

In het "draadje" bij de vraag (en nu natuurlijk weer neit te vinden) werd ik verwezen naar een voorbeeld database: Rapport filteren 2K3. Uitvoerig bekeken en wat mij opviel dat wanneer op de printknop wer gedrukt het formulier naar d eachtergrond ging. Jullie raden het al, mijn formulier blijft op de voorgrond. Verder werkt het perfect en ga als ik een antwoord vind op mijn vraag alles verde3r ombouwen. Ziet er een stuk mooier uit dan de parameterqueryvraag box.

Dit is mijn code: (hoe zet ik die netjes in dit forum?)

code:

Private Sub Knop352_Click()
stDocName = "Rapport analyse chauffeur"
Dim sFilter As String
If Me.cboJaar & "" <> "" Then
sFilter = "[Jaar]=" & Me.cboJaar
If Me.cboAfdeling & "" <> "" Then
sFilter = sFilter & " AND [Afdeling] = '" & Me.cboAfdeling & "'"
End If
Else
If Me.cboAfdeling & "" <> "" Then
sFilter = "[Afdeling] = '" & Me.cboAfdeling & "'"
End If

End If

DoCmd.OpenReport stDocName, acViewPreview, , sFilter
End Sub

In de voorbeeld database als genoemd komt er een regel:

Exit_cmdPlanning_Click:
Exit Sub

Die heb ik ingevoegd cmdPlanning veranderd in Knop352, maar dan doet e.e.a. het niet.

Wat doet deze steeds meer onervaren accessbouwer fout?

Ik hoor graag.

Risk
 
De db staat hier. Mocht je 'm nog zoeken
Wat je in ieder geval fout doet, is de code niet opmaken met de CODE knop. Dat maakt code doorgaans een stuk beter leesbaar, dus graag de volgende keer wel doen :)
Om bij de vraaag te blijven: wat je niet hebt overgenomen uit mijn voorbeeld is de regel die het formulier onzichtbaar maakt. En zonder die regel blijft het formulier uiteraard op het scherm staan. Jouw code zou er dus zo uit moeten zien:
Code:
Private Sub Knop352_Click()
stDocName = "Rapport analyse chauffeur"
Dim sFilter As String

    If Me.cboJaar & "" <> "" Then
        sFilter = "[Jaar]=" & Me.cboJaar
    End If
    If Me.cboAfdeling & "" <> "" Then
        If sFilter & "" <> "" Then sFilter = sFilter & " AND "
        sFilter = "[Afdeling] = '" & Me.cboAfdeling & "'"
    End If
[COLOR="#0000CD"][B]    Me.Form.Visible = False[/B][/COLOR]
    DoCmd.OpenReport stDocName, acViewPreview, , sFilter

End Sub

Om het formulier weer zichtbaar te maken als je het rapport sluit, moet het omgekeerde gebeuren. Dus bij het Sluiten van het rapport krijg je dan deze code, die middels een functie controleert of het formulier is geopend of niet:
Code:
Private Sub Report_Close()
    If IsLoaded("frmRapporten_Filteren") Then
        Forms!frmRapporten_Filteren.Form.Visible = True
    Else
        DoCmd.OpenForm "frmRapporten_Filteren"
    End If
End Sub


Code:
Function IsLoaded(ByVal strFormName As String) As Integer
 ' Returns True if the specified form is open in Form view or Datasheet view.
    
    Const conObjStateClosed = 0
    Const conDesignView = 0
    
    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
        If Forms(strFormName).CurrentView <> conDesignView Then
            IsLoaded = True
        End If
    End If
    
End Function

Overigens zit deze uitwerking niet in het voorbeeld; daar wordt het formulier alleen zichtbaar gemaakt, en wordt met On Error Resume Next de regel overgeslagen als het formulier niet is geladen. Maar dit is netter.
 
Michel,

Dank voor je (snelle) reactie als altijd. Inmiddels verdwijnt het formulier. Terugkomen ho maar.

Ik heb de tweede code geplaatst in het rapport Rapport analyse chauffeur (overigens een willekeurige naam) bij "sluiten"als gebeurtenisprocedure. In mijn taylormadebalk klik ik op rapport sluiten. Ik keer niet terug naar het formulier.

Ik heb geprobeerd frmRapporten te wijzigen in Rapport analyse chauffeur. Dat werkt niet en als ik e.e.a. wijzig in de tweede regel Forms! dan kleurt die rood en zegt compileerfout.

De 3e code reeks die je geeft: waar plaats ik die??

Hoor graag, ben al geholpen met je oplossing in de eerste codereeks. De oplossing zal wel eenvoudig zijn, maar even niet bij mij (als altijd)

Groet,

Risk
 
Zonder voorbeeld weet ik uiteraard niet wat er fout gaat. Je hebt het over een knop die je gebruikt; op zich zou dat niet mogen uitmaken, want de gebeurtenis heb je (als het goed is) bij de gebeurtenis <Bij sluiten> van je rapport gezet, en die wordt altijd uitgevoerd, of je nu de Access knop gebruikt of een eigen knop. Wat uiteraard wel moet kloppen, is de naam van het formulier dat je weer zichtbaar wilt maken. Kom je er niet uit, dan toch maar een voorbeeldje?
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan