Avatar billede ncbr Nybegynder
06. oktober 2001 - 12:44 Der er 28 kommentarer og
3 løsninger

Tildele felt i en underformular en funktion

Jeg har en formular \"Fsvoemmer\" med under formularen \"tiderunderformular\" og feltet DisciplinID.
hvordan kan jeg få dette felt til at udføre funktionen CHKDATE().

/ncbr
Avatar billede nih Novice
06. oktober 2001 - 12:54 #1
er det en funktion du selv har skrevet ??

Hvis det er en textbox, kan man alt efter hvordan funktionen er bygget op skrive:
=Chkdate([feltnavn])

prøv at forklar lidt nærmere hvad du vil.

Niels
Avatar billede terry Ekspert
06. oktober 2001 - 12:54 #2
IN the one of the fields events in the properties write =ChkDate()
Which event depends on what your wanting to do
Avatar billede terry Ekspert
06. oktober 2001 - 12:57 #3
If you want to check the dates entered on the sub form then I would think it best to call your function. In theis event you can check your fiields and if they arent OK you set Cancel = True which stops the record being written to the database
Avatar billede terry Ekspert
06. oktober 2001 - 12:58 #4
Forms Before Update
Avatar billede terry Ekspert
06. oktober 2001 - 12:59 #5
Lets get this right!
If you want to check the dates entered on the sub form then I would think it best to call your function in the forms Before Update event. In this event you can check your fields and if they arent OK you set Cancel = True which stops the record being written to the database
Avatar billede ncbr Nybegynder
06. oktober 2001 - 13:00 #6
jeg har lavet denne funktion:
On Error GoTo err_CHKDATE
If Forms!Tiderunderformular!dato > Date Then
MsgBox \"Du har indtastet en dato som ligger efter Dagsdato\", vbCritical, \"Ugyldig dato\"
End If

CHKDATE_exit:
    Exit Function
   
err_CHKDATE:
MsgBox Error$
    Resume CHKDATE_exit:

men når jeg sætter datofeltet afterupdate =CHKDATE()

kommer der en meddelelse \"svømmedatabasen kan ikke finde formularen *tiderunderformular*, der refereres til i Visual Basic-kode

/ncbr
Avatar billede terry Ekspert
06. oktober 2001 - 13:03 #7
You need to return a value from your function

If Forms!Tiderunderformular!dato > Date Then
MsgBox \"Du har indtastet en dato som ligger efter Dagsdato\", vbCritical, \"Ugyldig dato\"

CheckDate = False
else
CheckDate = True
End If


In the forms before update event you write

If Not CheckDate Then Cancel = True
Avatar billede nih Novice
06. oktober 2001 - 13:04 #8
Man kan henvise til en underformular på flg. måde

Me.Tiderunderformular.Form.dato > date

Niels
Avatar billede nih Novice
06. oktober 2001 - 13:07 #9
Sorry

Me.Tiderunderformular.Form![dato] > date

Niels

Avatar billede ncbr Nybegynder
06. oktober 2001 - 13:07 #10
in which form \"tiderunderformular\" the main form \"Fsvoemmer\" ?
Avatar billede terry Ekspert
06. oktober 2001 - 13:07 #11
Pass the date to the function.

If Not CheckDate(Me.DateField) Then Cancel = True



The function CHECKDATE should look like this

Function CHECKDATE( TheDate as Date) AS Boolean

On Error GoTo err_CHKDATE
If TheDate > Date Then
MsgBox \"Du har indtastet en dato som ligger efter Dagsdato\", vbCritical, \"Ugyldig dato\"
End If

CHKDATE_exit:
    Exit Function
   
err_CHKDATE:
MsgBox Error$
    Resume CHKDATE_exit:




End Function
Avatar billede terry Ekspert
06. oktober 2001 - 13:08 #12
If you pass the date to the function then you can use the same function for other date checking.
Avatar billede nih Novice
06. oktober 2001 - 13:31 #13
Nu tror jeg at jeg ved hvad der menes.

du skal kalde funktionen i underformularens beforeupdate hændelse - OG IKKE FRA hoved formularen.

Avatar billede nih Novice
06. oktober 2001 - 13:32 #14
Glem alt om hovedformularen, fordi dit tjek af indtastet dato skal foregå i underformularen....

Niels
Avatar billede ncbr Nybegynder
06. oktober 2001 - 13:32 #15
Jeg fatter ikke en lyd, lige nu, sorry :)
Avatar billede ncbr Nybegynder
06. oktober 2001 - 13:33 #16
Den nemme løsning er vel at lægge funktionen ind i en hændelse på datofeltet afterupdate, eller ?
Avatar billede nih Novice
06. oktober 2001 - 13:36 #17
Private Sub Form_BeforeInsert(Cancel As Integer)

  if txtboxnavn > date then
    msgbox \"bla. bla\"
    cancel = true
  end if

End Sub

denne kode lægger du i underformularen\'s hændelse \'før indsættelse\'.  txtboxnavn er navnet på txtboxen hvor der skal indtastes en dato.

Niels
Avatar billede nih Novice
06. oktober 2001 - 13:43 #18
if me![dato] > date then

er måske bedre - her henviser du direkte til feltet dato som kommer fra den underliggende forespørgsel /tabel i UNDERFORMULAREN.

Niels
   
Avatar billede ncbr Nybegynder
06. oktober 2001 - 13:45 #19
Det er den løsning jeg har valgt, der er ingen grund til at gøre det sværere end højest nødvendigt.

/ncbr
Avatar billede nih Novice
06. oktober 2001 - 13:46 #20
What do you think Terry ???? -

Jeg har ikke Access på den her PC - så det hele er efter hukommelsen - (den svigter mig en gang imellem) ;)

Niels
Avatar billede nih Novice
06. oktober 2001 - 13:48 #21
ncbr ->

Jeg tror ikke du behøver en særskilt function. Skriv din kode direkte i underformularens \'før indsættelse\' hændelse

Niels
Avatar billede nih Novice
06. oktober 2001 - 13:53 #22
ncbr ->

Har du problemmer med at finde hændelsen ???

Niels
Avatar billede ncbr Nybegynder
06. oktober 2001 - 13:54 #23
Jeg har fået det til at virke sådan her:

Private Sub Dato_AfterUpdate()
On Error GoTo err_CHKDATE
If Me.dato > Date Then
MsgBox \"Du har indtastet en dato som ligger efter Dagsdato\", vbCritical, \"Ugyldig dato\"
Me.tid.SetFocus
Me.dato = Date
Me.dato.SetFocus
End If

CHKDATE_exit:
    Exit Sub
   
err_CHKDATE:
MsgBox Error$
    Resume CHKDATE_exit:
End Sub
Avatar billede terry Ekspert
06. oktober 2001 - 13:56 #24
Hi Niels!
The only comment I have is which event procedure its in: I would us the before Update event. The before Insert is (I believe) only for new records, and what if he changes it?

I also agree that a seperate function isnt necessary.

mvh
Terry
Avatar billede terry Ekspert
06. oktober 2001 - 14:00 #25
ncbr>Great! points all round :o)
Avatar billede terry Ekspert
06. oktober 2001 - 14:01 #26
Or should that be  PINTS all round :O))))
Avatar billede nih Novice
06. oktober 2001 - 14:01 #27
Du har ret det var beforeUpdate event jeg mente - men det er jo svært at vide når jeg skriver noget andet...
Som dit svar 12:59:45  !!!

Niels
Avatar billede ncbr Nybegynder
06. oktober 2001 - 14:10 #28
If you swing by my place I\'ll have a Pint ready :)
Avatar billede ncbr Nybegynder
06. oktober 2001 - 14:10 #29
I live in Odense.
Avatar billede terry Ekspert
06. oktober 2001 - 14:29 #30
Well thats not so far from Vejle. I love Guinness!

I will keep that in mind next time I\'me there!

and have a great weekend :o)
Avatar billede ncbr Nybegynder
06. oktober 2001 - 14:30 #31
likewise

ncbr
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste artiklerRSS
07:52
07:37
07:32
07:02
06:42
12:00
23/10
23/10
23/10
23/10
23/10