04. september 2002 - 09:44Der er
19 kommentarer og 1 løsning
Ændring i datofelt
oki here we go again :)
problem - har datofelt (Købt_dato) hvor bruger indtaster en dato. Ønsker at bruger promtes hvis der foretages ændringer i det indtastede datofelt. Havde i første omgang placeret koden på "Ved ændring" - men det duer absolut ikke, da msgboxen så vises ved hvert eneste tal der tastes ind i feltet, og så dumme er brugerne altså heller ikke..... G***
Har så lagt den på "før opdatering" i stedet for. Det fungerer næsten ok ;) altså lige bortset fra hvis bruger har skrevet en anden dato, og så vælger NEJ til at bruge den nye dato - - > Access sletter så det indtastede i datofeltet, OG den oprindeligt indtastede dato er også væk - skod :/ Skyldes selvfølgelig at jeg har brugt Me.Undo - er der nogen der har en rigtig god ide, til hvordan jeg kan løses problemet
Yderligere for at komplicere det hele - datoen indtastes ikke altid med det samme, så der vil være records hvor datofeltet er tomt :/ __________________________________
Private Sub Købt_dato_BeforeUpdate(Cancel As Integer)
If Not Me.NewRecord Then
If MsgBox("Du har foretaget en ændring i datofeltet, der oplyser om hvornår varen " & Me.VareNavn & " er købt." + vbLf + vbLf + "Er du HELT sikker på du ønsker at ændre datoen til den " & Me.Købt_dato & " ??", vbCritical + vbYesNo, "Købsdato ændret....") = vbNo Then DoCmd.CancelEvent Me.Undo End If End If
mhh har syslet en del med OldValue, men hvis der ikke er indtastet nogen dato i feltet får jeg fejlen:
"Runtime error 94 - invalid use of null"
har i stedet for brugt følgendende:
______________________________________________
Private Sub Købt_dato_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_Handler
If Not Me.NewRecord Then
If MsgBox("Du har foretaget en ændring i datofeltet, der oplyser om hvornår varen " & Me.VareNavn & " er købt." + vbLf + vbLf + "Er du HELT sikker på du ønsker at ændre datoen til den " & Me.Købt_dato & " ??", vbCritical + vbYesNo, "Købsdato ændret....") = vbNo Then DoCmd.CancelEvent Me.Undo End If End If
' tja send 2 x ESC - er snyd :) SendKeys "{esc}{esc}", False
'Købt_dato.Text = Købt_dato.OldValue
Me.Refresh
Exit Sub
Err_Handler:
MsgBox "ERROR:" & Err.Description
End Sub _____________________________________________________
men spørgsmålet er om jeg beder om problemer når jeg fusker mig ud af sagen på den måde, hvad siger I ?
You say that if no date has been entered then you get an error! You are also testing that the record is one that already exists, so you should ask yourslef IF it should be allowed to create a record WITHOUT a date and IF it is then you could also allow the entry of a date IF it is empty and prompt if it is not
Hi Terry I´ll have to allow that the user skips købt_dato, as the user sometimes creates a record, before having the actual date on an invoice - rather annoying, but so it is :/
U have a point though - I think I´ll just talk to them....
If MsgBox("Du har foretaget en ændring i datofeltet, der oplyser om hvornår varen " & Me.VareNavn & " er købt." + vbLf + vbLf + "Er du HELT sikker på du ønsker at ændre datoen til den " & Me.Købt_dato & " ??", vbCritical + vbYesNo, "Købsdato ændret....") = vbNo Then DoCmd.CancelEvent Me.Undo End If End If
Me.Købt_dato = PrevValue
Exit Sub
Err_Handler:
MsgBox "ERROR:" & Err.Description
End Sub _________________________________________________
MEN af en eller anden grund kan OldValue absolut ikke lide min Err_Handler - der insisteres i hvert fald på at jeg lige skal have besked på, at det ikke kan lade sig gøre at gemme - maybee I should just stick with "SendKeys "{esc}{esc}", False" ??
If IsNull(Me.Købt_dato.OldValue) Then Exit Sub 'and If (Me.YourField <> Me.YourField.OldValue) Then 'xxxxx
or the combination 11:52 the alterations are acceptet but Access also displays the error:
"ERROR: Den egenskab eller funktion, der er angivet for egenskaben FørOpdatering eller Valideringsregl for dette felt, forhindrer Varestyring i at gemme dataene i feltet"
Private Sub Købt_dato_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_Handler
' er datofeltet tomt, accepteres det indtastede If IsNull(Me.Købt_dato.OldValue) Then Exit Sub
If Not Me.NewRecord Then
If MsgBox("Du har foretaget en ændring i datofeltet, der oplyser om hvornår varen " & Me.VareNavn & " er købt." + vbLf + vbLf + "Er du HELT sikker på du ønsker at ændre datoen til den " & Me.Købt_dato & " ??", vbCritical + vbYesNo, "Købsdato ændret....") = vbNo Then ' opdater ikke købt_dato med ændringerne Me.Undo
Else ' accepter ændringerne dvs. =vbYes - ikke nødvendigt at skrive noget ' så ELSE er faktisk ikke nødvendigt
and right U are why make the code complicated when it is possible to solve the problem with less lines :D
Synes godt om
Ny brugerNybegynder
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.