Avatar billede swil Nybegynder
19. august 2002 - 19:21 Der er 19 kommentarer og
1 løsning

Fejlkontrol i VBA i Access

Jeg har en stump vba kode der beregner indholdet af nogle felter ud fra hvad der dels er tastet ind af brugeren og dels hvad der slåes op i databasen. Hvis de felter der indgår i beregningen ikke er tastet ind og nedenstående formler således ikke er valide, starter debuggeren. Kan jeg indlægge en fejlkontrol i forbindelse med beregningerne, så der bare kommer en tekstbox med teksten "fejl i indtastede data"? Og hvordan?

'beregning af nye felter

nettopris = grossistpris - grossistrabat - industrirabat - aarsrabat + sukkerafgiftbelob + Me.Freightperunit + Me.Handlingchargeperunit

profitfranbelob = Me.Retailprice / ((100 + momssats) / 100) - Me.Costprice
osv.
Avatar billede mugs Novice
19. august 2002 - 19:23 #1
If IsNull(Me.grossistpris) Then
MsgBox "Fejl i indtastede data"
End If
Avatar billede mugs Novice
19. august 2002 - 19:36 #2
Koden måler om der er indtastet en værdi i felterne felt1,felt2 og felt3. Hvis felterne er tomme får du MsgBox og procedüren forlades. Hvis betingelsen ikke er opfyldt (Der er indtastet en værdi) adderes felterne og resultatet vises i feltet Tekst6.

If IsNull(Me.felt1 Or Me.felt2 Or Me.felt3) Then
MsgBox "Der er fejl i det indtastede"
Exit Sub
End If
Tekst6 = felt1 + felt2 + felt3
Avatar billede swil Nybegynder
19. august 2002 - 19:54 #3
Tak MUGS, jeg modificerede det lidt, således jeg kun får første fejl og først får opdateret når "opdater" er sand.
If IsNull(Me.Costprice) And Opdater Then
  MsgBox "Please enter Costprice!"
  Opdater = False
End If
Avatar billede swil Nybegynder
19. august 2002 - 19:57 #4
MUGS lige et kort tillægsspørgsmål, hvordan får jeg cursoren til at stå i det fejlbehæftede felt?
Avatar billede mugs Novice
19. august 2002 - 20:03 #5
Tak for point.
Mangler du ikke en "True":
And Opdater = True Then

DoCmd.GoToControl "Costprice"
Avatar billede swil Nybegynder
19. august 2002 - 20:06 #6
Nej jeg starter med at sætte Opdater til True inden mine kontroller. Tak.
Avatar billede swil Nybegynder
19. august 2002 - 20:12 #7
Jeg ved godt du har svaret og pointene er givet, men denne linie:

DoCmd.GoToControl Me.Costprice

giver følgende svar: Et udtryk du har indtastet er af en forkert datatype??
Avatar billede mugs Novice
19. august 2002 - 20:15 #8
Det var heller ikke det jeg skrev :o)

DoCmd.GoToControl "Costprice"
Avatar billede swil Nybegynder
19. august 2002 - 20:21 #9
Tja, så får jeg fejlen:

Der er ikke et felt med navnet costprice i den aktuelle post

Jeg opretter et nyt spørgsmål, for pointgivning.
Avatar billede mugs Novice
19. august 2002 - 20:24 #10
Nu staver du feltnavnet "costprice", før stavede du det "Costprice".
Det skal være 100% korrekt stavet.
Avatar billede mugs Novice
19. august 2002 - 20:27 #11
Jeg har lige checket en testdb, og koden er korrekt. I stedet kan du evt. prøve denne:

Me.Costprice.SetFocus
Avatar billede swil Nybegynder
19. august 2002 - 20:28 #12
Hej MUGS, jeg skriver præcis sådan her - og det burde da være rigtigt, fejlkontrollen er OK:

If IsNull(Me.Costprice) And Opdater Then
    MsgBox "Please enter Costprice!"
    Opdater = False
    DoCmd.GoToControl "Costprice"
End If
Avatar billede mugs Novice
19. august 2002 - 20:40 #13
Koden ser rigtig ud, så det er svært at gennemskue, hvad der er galt. Normalt kommer denne fejl, når feltet ikke eksisterer eller er stavet forkert. Har du kontrolleret, at du ved en fejl ikke har omdøbt feltet?
Avatar billede swil Nybegynder
19. august 2002 - 21:30 #14
Hej Mugs
Me.Costprice.SetFocus
Virkede heller ikke, fejlen står ved .SetFocus.
Jeg flytter ikke cursoren til de fejlbehæftede felter, men tak for hjælpen.
Avatar billede mugs Novice
19. august 2002 - 21:36 #15
Hej swill
Det skal virke. Du er velkommen til at sende db, så vil jeg prøve at se på det. Jeg benytter Access97, så du skal evt. konvertere.

mugs@mail.dk
Avatar billede swil Nybegynder
19. august 2002 - 21:55 #16
Det prøver jeg. Tak.
Avatar billede mugs Novice
19. august 2002 - 22:08 #17
db er modtaget, rettet og returneret. Fejlen var, at der var brugt et forkert feltnavn "Costprice" i stedet for det korrekte feltnavn "31costprice".
Avatar billede mugs Novice
19. august 2002 - 22:12 #18
swil > jeg har fået mailen tilbage med en besked om, at din postkasse er fuld. Kan du slette noget? Ellers skal koden se således ud:

DoCmd.GoToControl "31costprice"
Avatar billede swil Nybegynder
19. august 2002 - 22:57 #19
Hej MUGS
Jeg har fået databasen, det var en postkasse der blev videresendt til der var fyldt. Jeg må erkende, at jeg ikke var klar over, at feltet "navn" også blev brugt.

Jeg har oprettet spørgsmål http://www.eksperten.dk/spm/248051, hvis du gider svare på det, så får du de absolut tilkomne point - tak for hjælpen.
Avatar billede mugs Novice
20. august 2002 - 06:27 #20
Selv tak.
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