Rapport filteren

Status
Niet open voor verdere reacties.

willyv28

Gebruiker
Lid geworden
16 apr 2009
Berichten
120
Ik wil een rapprt keuze maken naargelang Brandstof soort of Aard toestel.
Ik krijg een Compileer fout "Blok If zonder End If", wat ontbreekt er?
Met Or lukt het niet en hij maakt ook niet de keuze tussen de 2 If.
Wil iemand mij helpen?


Private Sub Knop211_Click()
On Error GoTo Err_Knop211_Click

Dim stDocName As String

If Brandstof_soort = Mazout Then
stDocName = "Attest1 maz"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"

If Aard_toestel = Gasunit Then
stDocName = "Attest1 gasunit"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"

Else: stDocName = "Attest1"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
End If

Exit_Knop211_Click:
Exit Sub

Err_Knop211_Click:
MsgBox Err.Description
Resume Exit_Knop211_Click

End Sub
 
Code:
Private Sub Knop211_Click()
 On Error GoTo Err_Knop211_Click
 
Dim stDocName As String

 If Brandstof_soort = Mazout Then
 stDocName = "Attest1 maz"
 DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
 DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
 [COLOR="#FF0000"]End If[/COLOR]

 If Aard_toestel = Gasunit Then
 stDocName = "Attest1 gasunit"
 DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
 DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"

 Else: stDocName = "Attest1"
 DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
 DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
 End If

 Exit_Knop211_Click:
 Exit Sub
 
Err_Knop211_Click:
 MsgBox Err.Description
 Resume Exit_Knop211_Click

 End Sub

Voeg het rode gedeelte toe aan je code.
 
Of met een Select Case.
Code:
Case Brandstof_soort
    Case "Mazout"
        stDocName = "Attest1 maz"
    Case "Gasunit"
        stDocName = "Attest1 gasunit"
    Case Else
        stDocName = "Attest1"
End Select
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
Overigens vraag ik me af of je code zonder quootjes wel werkt...
 
Michel,
Krijg terug een Compileer fout "Case zonder Select Case".
Het werkte perfect tot dat ik die eerste IF .... toevoegde, ondanks cat hij moet de tweede IF ... afprinten print hij ook de eerste If ... af.
 
Wat ik in jouw code niet snap is dit:
Code:
 If Brandstof_soort = Mazout Then
Als [Brandstof_soort] een keuzelijst of een tekstveld is, dan moet de code zo luiden:
Code:
 If Brandstof_soort = "Mazout" Then
En dat geldt uiteraard ook voor de andere voorwaarden.
Heb je in een ander deel van het proces een variabele gedeclareerd met de naam Mazout, en gebruik je die als checkpunt, en is [Brandstof_soort] = Mazout dus een vergelijking met een variabele, dan is je code wel correct.
Overigens is mijn voorbeeldje in jouw geval niet toepasbaar; ik zie nu dat je twee verschillende vergelijken maakt, en dat gaat niet met een Select Case. Wel heb je teveel regels in gebruik:

Code:
If Brandstof_soort = Mazout Then
     stDocName = "Attest1 maz"
ElseIf Aard_toestel = Gasunit Then
     stDocName = "Attest1 gasunit"
Else
     stDocName = "Attest1"
End If
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
DoCmd.OpenReport stDocName, acNormal, "Filter Attest1"
Ik hou je eigen voorbeeld maar aan, waarbij de vraagtekens over de correctheid van de IF dus blijven staan ;)
 
Brandstof soort is een veld en Aard toestel is ook een veld. Met jou laatste code ondanks Aard toestel een Gasunit is print hij het attest1 maz af.
 
Dan herkent-ie de waarde niet. Mijn laatste code was gebaseerd op jouw voorbeeld, en als die niet werkt dan moet je dus een vergelijking maken met quootjes.
Overigens staat niet ter discussie of [Brandstof soort] en [Aard toestel] velden zijn of niet. Maar wel of Mazout en Gasunit teksten zijn in die velden, of variabelen die met de tekst zijn gevuld.
 
Ik kan je bijlage niet openen, ik krijg een foutmelding. Nog een keer proberen dus! En graag ook een 2003 variant, als je dat al niet gedaan had.
 
Het zou helpen als mense aanwijzingen opvolgen; dat scheelt mij het herhalen ervan :)

Code:
If Brandstof_soort = "Mazout" Then
     stDocName = "Attest1 maz"
ElseIf Aard_toestel = "Gasunit" Then
     stDocName = "Attest1 gasunit"
Else
     stDocName = "Attest1"
End If
Je IF checkt niet op een waarde, maar op een variabele die niet bestaat. En dan doet de code altijd de ELSEIF variant. Zou je die niet hebben, dan gebeurt er overigens helemaal niks...
 
En wat precies lukt er niet? Ik krijg a.d.h.v. jouw voorbeeld ook geen rapport geopend, maar dat komt doordat je niet-bestaande tabellen gebruikt voor zowel het rapport als in de filterquery (die ik overigens ook niet zou gebruiken; maar dat is een persoonlijke keuze).
 
In je nieuwe bijlage zijn de rapporten nog steeds gebaseerd op een tabel die niet bestaat.

Verander namen van tabellen/query's/formulieren/rapporten in namen zonder spaties en
gebruik als eerste 3 letters tbl/qry/frm/rpt.

Verander de namen op je fomulier in txtNaam, txtBrandstofsoort enz enz.
Zo is het duidelijker waarna je verwijst in vba.

Ook geef je bij het openen van het rapport een filter mee "Filter Attest1".
Is dit de bedoeling? Er wordt geen filter opgebouwd in je code.
 
De code doet het, dus daar zit het probleem niet. Dat zit in de bron van je rapporten. Daar gebruik je een niet-bestaande tabel voor. Zoals ik gisteren ook al zei :)
 
Denk dat je de hele base eens onder de loep moet nemen.

Drie rapporten terwijl je er met een kan volstaan.

Wanneer je keuzelijsten gaat gebruiken voor het soort Brandstof en het soort Aardtoestel en vervolgens een subformulier en een subrapport
voor de Batterij vervangen enz dan is 1 rapport voldoende.

Baseer je rapport op de Query die vanuit je formulier het id meegeeft en je krijgt het rapport op de juiste gegevens gefilterd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan