Onzichtbaar zetten van een veld

Status
Niet open voor verdere reacties.

astra

Gebruiker
Lid geworden
28 jul 2003
Berichten
127
Hier zijn we weer met een nieuwe vraag:
Als in het veld Geboortedatum geen datum is ingevuld wil ik het veld met Leeftijd (formule) onzichtbaar zetten.
Heb dit geprobeerd met volgende code bij "Bij aanwijzen"

Code:
Z = Geboortedatum
If Not IsNull(Z) Then
Me.Leeftijd.Visible = True
Else
Me.Leeftijd.Visible = False
End If

De leeftijd staat wel onzichtbaar bij het aanmaken van een nieuw record, maar als ik een datum invul blijft het veld Leeftijd onzichtbaar staan.
Als ik dan eens naar het vorige of volgend record ga en terugkeer staat het veld Leeftijd wèl zichtbaar.
Is er iets mis met de code of nog iets aan toevoegen?

Alvast bedankt bij voorbaat.

Astra
 
Laatst bewerkt door een moderator:
Zet de code ook in de eigenschap "Na bijwerken" van het veld geboortedatum. Een andere mogelijkheid is een verwijzing naar de code van de eigenschap "Bij aanwijzen", als de code aangepast moet worden hoef je dat maar op 1 plek te doen. Als het niet lukt, zet dan even een voorbeeldje hier. Dan helpen we even.
 
Prachtig Charles!!!
Ik heb de volledige code in "Na bijwerken" geplaatst want weet niet hoe men een verwijzing moet maken.
Weer iets bijgeleerd :)

Heel hartelijk bedankt voor je vlugge reactie!

Nog een heel fijne dag
Astra
 
I.p.v. de volledige code te herhalen, kun je beter,zoals Charles al zei, refereren naar de formuliercode. De regel is heel simpel:
Code:
    Call Form_Current
 
Beste Charles en Michel,

Ik heb de Call functie gebruikt maar heb deze moeten vervangen door de volledige code. Er staat o.a. een cmd in "Bij aanwijzen" nl. : DoCmd.GoToControl "cboAanhef" om bij aanmaak van een nieuw record op dit eerste veld te staan
Als ik dus de geboortedatum intik en de Tab toets druk om naar volgend veld te gaan, springt de cursor naar het veld "Aanhef" ipv naar het volgend veld.

Als jullie het wensen kan ik altijd eens mijn database doorsturen.

Nogmaals mijn beste dank voor het voorbeeldje en de code.

Groetjes,
Astra
 
Ik gebruik de tip van Charles ook eigenlijk nooit op die manier; eerder trek ik de herhalende opdrachten er uit, en maak daar een aparte functie van. In jouw geval bijvoorbeeld:

Code:
Function Zichtbaar()
    Z = Geboortedatum
    If Not IsNull(Z) Then
        Me.Leeftijd.Visible = True
    Else
        Me.Leeftijd.Visible = False
    End If
End Function

Deze functie roep je dan aan als je hem nodig hebt. Dus ook in de procedure <Bij aanwijzen>, maar ook <Na bijwerken>.

De aanroep in dit geval: Call Zichtbaar
 
Ik gebruik de tip van Charles ook eigenlijk nooit op die manier

Als de volledige code hier had gestaan had ik ook niet voor deze oplossing gekozen, dat mag duidelijk zijn. Echter als er geen sprake is van een herhaalde code en het hoeft alleen maar gebruikt te worden in 1 formulier dan gebruik ik het zeker. Zie niet in wat daar mis mee is.

Dat is waar ik vaak bang voor ben op een forum. Vaak wordt het probleem niet volledig neergelegd of code wordt maar voor een gedeelte geplaatst. Dan wordt het moeilijk om meteen de beste oplossing te geven, maar daar hoef ik jou natuurlijk met jouw ervaring op dit forum niets over te zeggen toch?
 
Heb je helemaal gelijk in.... Overigens bedoelde ik het niet als kritiek; wat ik eigenlijk bedoelde is: als een routine op meerdere plekken gebruikt kan worden, dan vind ik het plezierig als ik hem snel kan klassificeren. Door er een functie van te maken met een beschrijvende naam, weet ik beter wat ik aanroep. Met Call Form_Current wordt de code uiteraard prima uitgevoerd, daar zit 't 'm dus ook niet in. Alleen weet ik dan niet wat-ie aan het uitvoeren is; daarvoor moet je er toch weer naar toe. Zodoende dus mijn opmerking!
 
Mea culpa... sorry mannen dat ik niet vermeld had dat er nog andere cmd's in "Bij aanwijzen" stonden.
Klein excuus: ik ben een leek en wist echt niet dat dit van invloed was op een Call.

Wat betreft de functie, ik krijg volgende foutmelding op Me :
"Compileerfout: Ongeldig gebruik van het sleutelwoord Me"
De help geraadpleegd en daar las ik dat men best een klassemodule maakt als men Me. gebruikt.
Dat heb ik dan ook gedaan maar kreeg dan andere foutmeldingen.
De klassemodule dan maar weer verwijderd en terug normale module gemaakt.
Nogmaals, ik ken absoluut niks van functies.

Bij "Na bijwerken" heb ik volgende ingetikt : =Zichtbaar()
In "Bij aanwijzen" heb ik Call Zichtbaar ingetikt

Wat heb ik fout gedaan?
Moet er soms in Verwijzingen iets bijgevoegd worden?
Ik heb hier het volgende staan (Acces 2007):
- Visual Basic For Applications
- Microsoft Access 12.0 Object Library
- OLE Automation
- Microsoft Office 12.0 Access database engine Object Library

Groetjes,
Astra
 
Leg eerst even uit wat je precies gedaan hebt, want de code is exact hetzelfde volgens mij als in jouw voorbeeld. Ik ging er dan ook van uit (dat is ook weer een beroepstic vermoed ik...) dat je de functie op het formulier hebt gezet waar ook je oorspronkelijke code stond. Maar nu vermoed ik dat je eerst een aparte module hebt ingevoegd om de functie in te zetten. Ben ik warm? Zo ja: mag die module weer weg; de hele functie kun je zo op je formulier gebruiken. Plak 'm ergens op onder de andere knopcodes, en hij gaat werken!
Me kun je prima gebruiken op de codepagina van het formulier. Wil je een functie ook voor andere formulieren of queries gebruiken, dan kun je 'm beter anders bouwen. Maar zet 'm eerst eens op het formulier, zou ik zeggen!
 
Wat betreft de functie, ik krijg volgende foutmelding op Me :
"Compileerfout: Ongeldig gebruik van het sleutelwoord Me"

Dat is nu precies wat ik bedoel. Te grote stappen nemen.
 
GELUKT!!!
Oef :d

Michel, je hebt goed geraden want ik had inderdaad een module gemaakt omdat ik ervan uitging dat een functie thuishoort in een module. Dit is echt nieuw voor mij hoor en ben nu een ervaring rijker dankzij jou :thumb:

Héhé, ik kan dus die methode gebruiken voor nog andere zaken.

Alles werkt dus pico bello met de functie die ik nu onder een knop gezet heb.

Ik sta weeral eens bij jou in het krijt ;)

En ik heb nog een vraagske maar zal dat in een ander onderwerp zetten.
Eerst nog wat zoeken en zien of ik het zelf kan oplossen.

Hartelijk bedankt voor jullie moeite!
Astra
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan