Avatar billede moba Nybegynder
28. februar 2007 - 22:40 Der er 10 kommentarer og
2 løsninger

Spørg før record forlades.

Hejsa
Jeg har en formular, med en masse felter (fordelt på flere faner)
Når jeg opretter en ny post, indtaster data, og går til næste post (eller eventuelt lukker formen) skal enkelte af felter verificeres.
Det samme gælder hvis en record er blevet opdateret.
Jeg har forsøgt med form afterupdate, men problemet er at denne hændelse  trigger både ved indgang og udgangen af en ny record.

Morten
Avatar billede terry Ekspert
01. marts 2007 - 11:59 #1
hi Morten
Try the before update event
Avatar billede terry Ekspert
01. marts 2007 - 12:02 #2
In this event you should be able to validate the fields and set cancel to False if any fail
Avatar billede moba Nybegynder
01. marts 2007 - 14:48 #3
Sidder ikke med det pt. men er ret sikker på jeg testede  både form_beforeupdate... samt afterupdate.
Problemet er at dette trigger en hændelse så snart der indtasts i en ny record. Jeg har brug for at hændelsesforløbet starter når man går ud af recorden.
Avatar billede balderk Nybegynder
01. marts 2007 - 16:07 #4
Hvorfor vil du først validere når man går ud af record?
Med lidt bagvendt kode, kan du bruge 'current' til dette. Du kan evt. bruge noget a la nedenstående til at angive, hvilke værdier, der skal checkes
  if me.dirty then 'checker om record er ændret
    if me.feltderskalcheckes.value < 0 then
      ...
    endif
  endif

Men hvorfor ikke validere det enkelte felt, når man retter i det?
Dette kan du evt. styre via det enkelte felts valideringsregler eller via VB hvis situationsafhængigt.
Avatar billede terry Ekspert
01. marts 2007 - 17:40 #5
In the before update event the record has not yet been written to the table so you can make any alterations necessary if the data is not valid. In the AFTER update event the data HAS been written to the database so if you now validate you cant revert to the original (old) data.

Sometimes it is necessary to validate the whole form/fields at the same time because som fields may be depandant on values in other fields.
Avatar billede terry Ekspert
01. marts 2007 - 17:44 #6
this is taken from Access Help

You often use the BeforeUpdate event to validate data, especially when you perform complex validations, such as those that:

Involve conditions for more than one value on a form.


Display different error messages for different data entered.


Can be overridden by the user.


Contain references to controls on other forms or contain user-defined functions.
Avatar billede terry Ekspert
01. marts 2007 - 17:46 #7
And this is an example also taken from Access Help. Note that setting Cancel = True cancels the update so that data can be changed BEFORE the data is written to the dB.

Private Sub ProductName_BeforeUpdate(Cancel As Integer)
    If(Not IsNull(DLookup("[ProductName]", _
        "Products", "[ProductName] ='" _
        & Me!ProductName & "'"))) Then
        MsgBox "Product has already been entered in the database."
        Cancel = True
        Me!ProductName.Undo
    End If
End Sub
Avatar billede terry Ekspert
17. marts 2007 - 14:18 #8
whats the status moba?
Avatar billede moba Nybegynder
26. marts 2007 - 21:55 #9
Terry sender du lige et svar - jeg bruger before update. Gjorde jeg også før, men kunne ikke få det til at spille fordi der lå en me.requery på et af felterne. My bad...
Avatar billede terry Ekspert
27. marts 2007 - 08:20 #10
tak
Avatar billede terry Ekspert
03. april 2007 - 09:55 #11
.
Avatar billede terry Ekspert
03. april 2007 - 10:18 #12
thanks moba
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