Avatar billede erlandsen Seniormester
16. maj 2009 - 11:45 Der er 9 kommentarer og
1 løsning

opdatere felter i formular ved "opdater"

Jeg har en formular med nogle felter som hentes fra en forespørgsel som linker nogle forskellige tabeller - det er der selvfølgelig ikke noget mærkeligt i.

Mine brugere er ikke specielt velbavandret i Access så jeg vil gerne gøre det lidt sværere for dem at lave fejlopdateringer.

F.eks. kunne jeg tænke mig, at når man skriver/opdaterer et eller flere felter i formularen - så skal man først bekræfte opdateringen af denne record ved f.eks. at skulle klikke på en knap "Opdater".

Det betyder også at hvis brugeren skulle lave nogle opdateringer i formularen - så skal knappen "Opdater" komme frem hvis brugeren går væk fra denne record - f.eks. hvis der vælges næste eller forrige record eller formularen lukkes.

Kort fortalt så skal mine brugere ikke kunne opdatere noget som helst før de er blevet bedt om at bekræfte det på en eller anden måde.
Avatar billede mugs Novice
16. maj 2009 - 12:00 #1
Ret beset skal du indsætte en hændelse i Current (VedAktuelt) og lukning. Der kan du bruge en MSGBOX med Ja og Nej og en betingelse. Hvis brugeren vælger Ja opdateres formularen. Vælges der Nej kan du
indsætte Me.Undo
Avatar billede erlandsen Seniormester
16. maj 2009 - 12:27 #2
Er der nogen chance for at du gider at fortælle mig hvad der skal stå mellem:

Private Sub Form_Current()

End Sub

da jeg ikke ved ret meget om VBA?
Avatar billede erlandsen Seniormester
16. maj 2009 - 13:29 #4
Jeg har kigget lidt på YesNoCancel funktionen og er lidt i tvivl om hvor den sættes ind og hvad der skal stå under Case Else?

Select Case MsgBox("User prompt", vbYesNoCancel)

Case vbYes
txtIndex.Locked = False

Case vbNo
txtIndex.Locked = True

Case Else
??????

End Select
Avatar billede mugs Novice
16. maj 2009 - 19:21 #5
Private Sub Kommandoknap19_Click()
If MsgBox("Ønsker du at opdatere posten, tryk på Ja" & vbNewLine & vbNewLine & "Ønsker du at annulere rettelsen, tryk på Nej", vbYesNo, "Bekræft opdatering") = vbYes Then
DoCmd.RunCommand acCmdSave
Else:
Me.Undo
End If
End Sub
Avatar billede erlandsen Seniormester
17. maj 2009 - 09:46 #6
mugs - hvad gør ovenstående helt præcist?
er det en knap man skal trykke på når man har fundet den record man vil kigge på, eller?
hvad nu hvis brugeren går hen på en record og bare skriver i et af felterne - bliver brugeren så bedt om at tage stilling til om opdateringen skal gemmes eller?
Avatar billede mugs Novice
17. maj 2009 - 09:58 #7
Linien viser hvor koden er indsat, nemlig i en kommandoknap's OnClick:
Private Sub Kommandoknap19_Click()

Her en msgbox med 2 muligheder / knapper vbYesNo. Den er koblet sammen med en betingelse: Hvis du trykker på Ja udføres kommandoen acCmdSave der gemmer ændringen: 

If MsgBox("Ønsker du at opdatere posten, tryk på Ja" & vbNewLine & vbNewLine & "Ønsker du at annulere rettelsen, tryk på Nej", vbYesNo, "Bekræft opdatering") = vbYes Then
DoCmd.RunCommand acCmdSave

Hvis du trykker på Nej udføres en anden kommando Me.Undo der annullerer indtastningen overalt i formularen og vender tilbage til den forrige indtastning / værdier:
Else:
Me.Undo

afslutter med en End If. Det skal du gøre når du er startet på en If.. Then handling.
End If
End Sub
Avatar billede erlandsen Seniormester
18. maj 2009 - 00:51 #8
Tak for info!

Umiddelbart så virker det ok.
Der er bare det problem at hvis brugeren vælger ikke at klikke på knappen og går til anden record eller lukker for formularen - så vil en evt. opdatering blive gemt (som normalt) - uanset om den er tilsigtet eller ej?
Avatar billede mugs Novice
18. maj 2009 - 08:41 #9
Korrekt.

Men du må vurdere brugerens muligheder og indsætte en kode hvor det er nødvendigt.

Hvis brugeren skal promptes hvis formularen lukkes, må du indsætte koden i formularens Close event. Ligerledes hvis brugeren ikke må gå til en anden post, kan du fjerne navigationsknapperne nede til venstre, også MIN / MAX knapperne skal du tage stilling til.

Jo mere du vil begrænse brugerens muligheder og lave systemet idiotseikkert, jo flere ting skal du tage stilling til.
Avatar billede mugs Novice
18. maj 2009 - 21:42 #10
Tak for point.
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