querry vraagt naar variabel

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
Hallo,
Ik dacht dat ik het voor mekaar had, het aansturen van een query via een form, maar toch krijg ik steeds weer de vraag naar de variabel die ik dacht ingegeven te hebben.
Wat doe ik hier fout?

Als ik de "form" open dan is het net of een cijfer (van 1 tot 3) werd al gekozen.
De reflex zou zijn, akkoord te gaan met deze keuze, terwijl er, denk ik, niet echt een waarde toegekend werd
Hoe zorg ik er voor dat er niets gekozen wordt als ik de form open? ik dacht dit op te lossen met de focus naar een drukknop te brengen maar dat levert niks op

Bedankt
JP

Bekijk bijlage DATA.zip
 
Je rapport is gebaseerd op een query waarin je in een conditie verwijst naar de gekozen waarde in je formulier.
Echter, als het rapport is geopend staat de focus op het rapport.
Ergo de foutmelding.
Je moet in je formulier in de Bij Klikken gebeurtenis waarmee je je rapport de conditie zetten, niet in je query.

Wordt dan zoiets

DoCmd.OpenReport "Niet_recente patienten", acViewPreview, , "DateAdd('m', -1*" & Me.[Aantal_mnd] & ",Date())"

Betekent wel dat je de query waarop je je rapport baseert aan moet passen.
Hoe, dat mag je zelf even uitvogelen (Leuke oefening lijkt me).

Tardis
 
Alternatief: disable de knop <Maak rapport> bij het starten van het rapport, en schakel hem in als je een keuze maakt in de keuzelijst. Op die manier kun je voorkomen dat het rapport gestart wordt zonder dat er een keuze gemaakt is.
Overigens ben ik ook geen voorstander van afhankelijke formulierverwijzigen in queries; ik vind dat een rapport altijd te starten moet zijn, en dat betekent dus dat er geen criterium in hoort te zitten dat naar een (misschien wel niet geopend) formulier verwijst. Dus ofwel het cirterium meegeven zoals tardis aangeeft, ofwel het rapport baseren op een query waarvan je de SQL via het formulier aanpast.
Beide technieken zijn uitgebreid behandeld in de cursussen; de door jouw gebruikte werkwijze niet, en die gaat niet aan bod komen ook :)
 
heb mijn probleem al gevonden...
had "oude" code waarin form niet onzichtbaar gemaakt wordt...

Dat van die keuzelijst... hoe zit dat??

JP
 
In de gebeurtenis <Bij Klikken>, of <Na bijwerken>, zet je dan de actie Me.cmdRapport.Enabled=True
Eventueel aftesten op een keuze, door te kijken of de keuzelijst leeg is of niet.
Code:
If Len(Me.Keuzelijst) > 0 then
     Me.cmdRapport.Enabled=True
Else
     Me.cmdRapport.Enabled=False
End If
In het eerste geval is er iets gekozen, en is de knop actief, in het tweede geval is er geen keuze gemaakt, en is de knop uitgeschakeld.
 
Goede morgen.... Octafish en anderen

Ik paste aan wat je zei en krijg volgende foutmelding:

Method or data member not found

Ook het "overnemen" van de variable, door de form unvisible te maken lukt niet

Graag een handje
JPBekijk bijlage Data3.zip
 
Het helpt als je de knop de naam geeft die ik in mijn code gebruik. Of, alternatief, dat je de code aanpast en de naam van jouw knop gebruikt in de code. Zelf geef ik de voorkeur aan knoppen die een logische naam hebben, en cmdRapport is dat wel, en Knop4 is dat niet.

Bovendien moet de code om de knop te activeren niet bij de knop staan, want die doet het natuurlijk dan niet. De code met bij de Keuzelijst staan. Dus zo:

Code:
e Sub Aantal_mnd_Click()
    If Len(Me.Aantal_mnd) > 0 Then
        Me.cmdRapport.Enabled = True
    Else
        Me.cmdRapport.Enabled = False
    End If
End Sub

Bovendien moet de eigenschap <Ingeschakeld> van de knop op <Nee> staan, want de knop moet geactiveerd worden door de keuzelijst. Als de knop al geactiveerd is, valt er weinig meer te activeren :)
 
OK, dit is wel erg dom van mij...
Bedankt, ook voor je geduld...

Kan je me toch nog een handje helpen ivm die variabel? Ik weet echt niet wat er fout gaat...

JP
 
Filteren op datums kan een beetje vervelend zijn, zeker als die datum uit een formulier moet komen. Is het formulier dicht, dan werkt het filter niet goed. Daarom geef ik het criterium altijd mee vanuit het formulier, middels het WHERE argument van de DoCmd.OpenReport. Je hebt, in mijn werkwijze, een extra veld nodig dat de datum omzet naar een getal. Dat veld (Totaalregel: Expressie) ziet er zo uit in de query:
Code:
MaxDatumWaarde: Max(CLng([DATUM]))
En het rapport openen gaat dan zo:
Code:
Private Sub cmdRapport_Click()
Dim sFilter As String
    sFilter = "[MaxDatumWaarde] <" & CLng(DateAdd("m", -([Aantal_mnd]), Date))
    Me.Form.Visible = False
    On Error Resume Next
    DoCmd.OpenReport "Niet_recente patienten", acViewPreview, , sFilter
End Sub
Er zijn meer manieren, maar dit is de mijne :)
 
Sorry hoor, ben nog niet mee

Als ik in de eigenschappen de keuzelijst "aantal_mnd" enabled op no zet dan kan ik niks meer in die keuzelijst aanduiden

Wat bedoel je met een extra veld... wat moet daar mee gebeuren, hoe zou dat moeten noemen
Sorry dat ik wat hardleers ben
JP

Bekijk bijlage Data3.zip
 
De keuzelijst moet natuurlijk Aan staan, anders kan je niks selecteren. Het gaat er om dat de Knop uitgeschakeld is. Die wordt, als het goed is, aangezet door een keuze te maken uit de keuzelijst.
 

Bijlagen

Hallo,

Vooreerst bedankt vor je hulp... het werkt... tot op een klein detail na
Ik paste een en ander aan om in mijn "hoofdprogramma" te steken
Het rapport wil ik natuurlijk netjes uitgeprint
Ik maakte een hoofding aan die bij de previuw netjes getoond wordt, maar eens uitgeprint, niet op papier staat
Hoe kan dat??

Bedankt
JP

Bekijk bijlage Data4.zip
 
Laatst bewerkt:
Er gebeurt exact wat je wilt (althans: wat je hebt ingericht) dus de verbazing snap ik niet helemaal :)
Als je op deze manier een rapport maakt, waarbij je bij het openen van het formulier kijkt naar een filter, dan moet je het rapport ook afdrukken vanuit het afdrukvoorbeeld. Dan zie je de koptekst, die afhankelijk is van het filter. ga je het rapport direct afdrukken (dus geen preview) dan kijkt Access niet haar het filter, en dus ook niet naar de vergelijking die je daar maakt. Dus: of het filter anders toepassen, of op de goede manier afdrukken.
 
Ok.. En wat is dsn de goeie manier als ik de preview niet wil???
 
Je gebruikt de verkeerde gebeurtenis in je rapport.
Je moet de code niet in de Bij Laden gebeurtenis van het rapport zetten maar in de Bij Opmaken gebeurtenis van de paginakop van het rapport.

Tardis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan