Avatar billede Champ_007 Nybegynder
16. december 2012 - 18:00 Der er 7 kommentarer og
1 løsning

Gøre et felt afhængig af svaret i et andet felt (Access 2010)

Hvis jeg har oprettet et felt, hvor brugeren af databasen skal udfylde et felt med enten ja eller nej, er det så muligt, at såfremt brugeren svarer ja, at gøre et andet felt obligatorisk for brugeren?

Eksempelvis:

Felt 1: Er der aftalt prisafslag - ja/nej

Felt 2: Hvis ja i felt 1 - Hvor stort et afslag i DKK?
Avatar billede larsgrau Forsker
16. december 2012 - 22:34 #1
Ja det er mulig

if me.felt1 = true then
me.felt2.setfocus
else

endif

Noget i den stil
Avatar billede Champ_007 Nybegynder
17. december 2012 - 11:21 #2
Du må meget gerne være lidt mere specifik.
Avatar billede fdata Forsker
17. december 2012 - 22:39 #3
Det mest pædagogiske vil nok være kun at vise feltet i de situationer, hvor der er svaret Ja.

I Felt1's EfterOpdatering/AfterUpdate hændelse lægger du:
  Me.Felt2.Visible=Me.Felt1
(altså: hvis Felt1 er True, er Felt2 synlig)

I formularens VedAktuel/OnCurrent hændelse lægger du samme kode:
  Me.Felt2.Visible=Me.Felt1
(herved viser/skjuler du Felt2 svarende til Felt1 i den aktuelle post)
Avatar billede Champ_007 Nybegynder
20. december 2012 - 08:44 #4
Den første funktion EfterOpdatering/AfterUpdate fungerer rigtig godt. Men felt 2 bliver ikke gjort obligatorisk ved denne handling. Har du et tip til dette?

I forhold til det du skriver med VedAktuel/OnCurrent hændelse. Denne funktion har jeg ikke kunnet finde i generer hændelsesprocedure.

Hvad står ME for i koden?
Avatar billede fdata Forsker
20. december 2012 - 18:41 #5
Obligatorisk:
Jeg er lidt usikker på, hvad du mener med "felt2 bliver ikke gjort obligatorisk". Jeg forstod det som at du gerne ville se feltet. Hvis du mener, at cursoren skal placeres i feltet, hedder det:
  Me.Felt2.SetFocus

VedAktuel:
Jeg bruger ikke "generer hændelsesprocedure" - hedder det mon FormCurrent eller sådan noget?

Ellers kan du let oprette proceduren på anden måde:
1. Når du står i formularen i Design mode, klikker du i det lille grå kvadrat helt oppe til venstre (ud for linealerne).
2. Tast så F4 (nu ser du Egenskabsarket)
3. Klik på fanen "Hændelser"
4. Øverste linie er "VedAktuel". Vælg hændelsesprocedure og klik på knappen med de tre punktummer.
5. Nu står du i VBA editoren i den korrekte rutine.

Me:
Me er helt enkelt det engelske ord "me" (mig). Det bruger man når man vil referere til et kontrolelement, som befinder sig på den aktuelle formulaer eller rapport. Det forhindrer misforståelser.
Avatar billede Champ_007 Nybegynder
20. december 2012 - 21:30 #6
Tak for dit lange svar. Du får point ;)

Er først lige begyndt at arbejde i Access, men kender VBA sproget fra Excel - jeg er dog aldrig stødt på ME før ;)

Det jeg mener med at felt 2 ikke bliver obligatorisk er, at brugeren af formularen har mulighed for at arbejde videre selvom vedkommende ikke har skrevet noget i feltet. - Hvis du har et tip til dette, vil jeg meget gerne høre det.
Avatar billede fdata Forsker
21. december 2012 - 12:21 #7
Det letteste vil nok være at tjekke det inden du forlader posten, f.eks.:

Private Sub Form_BeforeUpdate(Cancel As Integer)
  If Me.Felt1=True And IsNull(Me.Felt2) Then
    MsgBox "Indtast xxxxx", vbInformation, "Manglende data"
    Me.Felt2.SetFocus
    Cancel = True
  End If
End Sub
Avatar billede fdata Forsker
21. december 2012 - 12:22 #8
... og med hensyn til din besked vedr. point: Behold dem bare - og velkommen i Access-verdenen ;O)
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