Men jeg vil gerne undgå meddelelsen, hvis det felt brugeren trykker på efter indtastning i underformularen faktisk er ”NæsteOpfDato”. Hvordan gør jeg det?
If Me.FELTNAVN = Me.NæsteOpfDato Then exit sub else: Besked = MsgBox("Husk at opdatere opfølgningsdato", vbExclamation, "Har du husket?") DoCmd.SelectObject acForm, "frmIndtastning" DoCmd.GoToControl "NæsteOpfDato" end if
Det forudsætter at felterne begge ligger i underformularen, ellers skal du referere til parentform
Som jeg forstår det, så vil du have, at når brugeren har indtastet data i underformularen, så skal han mindes om, at han skal skrive noget i feltet NæsteOpfdato på hovedformularen!? Så jeg tror ikke, at dt forslag vil hjælpe, Mugs!
Jeg har ikke lige selv en god løsning, andet end at jeg ville sætte feltet NæsteOpfDato til obligatorisk/påkrævet således at brugeren skulle taste denne dato INDEN han fik lov at hoppe ned i underformularen.
btw, i stedet for DoCmd.SelectObject acForm, "frmIndtastning" DoCmd.GoToControl "NæsteOpfDato"
Hvad mener du med Me.Feltnavn? Underformularen består af 3 felter: dato, initialer og kommentarer. Når man har udfyldt dem, skal man jo lukke parentformularen, men huske at opdatere opfølgningsdatoen i parentformen. Så hvis man bare trykker på luk-knappen, skal den lige minde en om først at opdatere opfølgningsdatoen, men hvis man ikke har glemt det og derfor trykker i NæsteOpfDato-feltet, ville det være rart ikke at skulle få påmindelsen op.
Hov, Thomas, jeg havde ikke set dit svar da jeg svarede mugs, men du har ret i det du skriver. Problemet er bare at det ikke er påkrævet at skrive en opfølgningdato, det er ikke sikkert der skal følges op. Den skal bare minde brugeren om det.
Jeg tror, at du er nødt til at lægge koden på Form_BeforeUpdate og Form_Unload:
If Me!DinUndeformular.Form.Recordsetclone.recordcount > 0 and isnull(Me!NæsteOpfDato) then if msgbox("Du skal huske at udfylde NæsteOpfDato! Er du sikker på at du vil forlade posten uden at indtaste opfølgningsdato?", vbquestion+vbyesno, "Husk Opfølgningsdato!") = vbno then docmd.cancelevent Me!NæsteOpfDato.Setfocus endif
Jeg mener godt nok de pæne ord, men der er faktisk en ting der ikke virker rigtigt her, for den tager ikke hensyn til om man overhovedet har været nede i underformularen, den kigger kun på om der står noget i NæsteOpfDato eller ej. Hvis jeg f.eks. bare åbner en post og lukker den igen, spørger den også. Faktisk som om koden lå på luk-knappen. Jeg har lagt koden på Form_BeforeUpdate og Form_Unload som du skrev. Hvad nu?
...og den skal faktisk kun tjekke om man har skrevet i underformularen, ligemeget om der står noget i NæsteOpfDato, det kunne jo være en gammel dato...
Min kode checker om der er en post i underformularen (hvormange poster kan der egentlig være?) og om der står noget i NæsteOpfDato. Der er masser af 'huller' i den metode. Nogle af hullerne kan lukkes, hvis man definerer det kriterierne ordentligt.
Men hvis du ikke vil have at den skal checke for gamle poster, så må vi finde en anden metode.....tænke tænke tænke....
I et modul (ligegyldigt hvilet) erklærer du en public variabel i toppen:
Public SubFormOpdateret as Boolean
På underformularen lægger du denne kode på Form_Afterupdate: SubFormOpdateret = True
På underformularens Form_Current lægger du denne sætning: SubFormOpdateret = False
På hovedformularens Form_Beforeupdate og form_Unload lægger du denne kode: If SubFormOpdateret = true And isnull(Me!NæsteOpfDato) then if msgbox("Du skal huske at udfylde NæsteOpfDato! Er du sikker på at du vil forlade posten uden at indtaste opfølgningsdato?", vbquestion+vbyesno, "Husk Opfølgningsdato!") = vbno then docmd.cancelevent Me!NæsteOpfDato.Setfocus endif
Det er ikke afprøvet, men det virker i mit hovede (måske med lidt justeringer ;)
Hej Thomas Jeg lavede selv en tilsvarende funtion til NæsteOpfDato, så i stedet for:
If SubFormOpdateret = true And isnull(Me!NæsteOpfDato) then
har jeg nu dette:
If SubFormOpdateret = True And DatoOpdateret = False Then
for det kunne jo godt være der stod en gammel dato der skulle ændres.
Jeg bliver også dygtigere, takket være geniale folk som dig!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.