02. maj 2005 - 20:44Der er
10 kommentarer og 1 løsning
Tidspunkt i Access m. SQL server som backend
Jeg har en database, hvis feltdefinitioner er sat forkert op. Databasen har tidligere kørt fint med en Access backend, men skal nu overflyttes til en SQL-server.
Problemet er at indtastningsformen, hvor feltværdierne fldTidFra og fldTidTil angives har en inputmaske: 00:00;0;_ Formålet med dette er at der kun skal kunne indtastes tidspunkter, f.eks. 16:30
Folk må kun indtaste tidspunktet - ikke datoen - og SQL-serveren vil ikke acceptere at man kun indtaster tidspunktet. Jeg kan godt ændre i feltdefinitionerne, men det vil betyde en masse ekstraarbejde i rapporter og forespørgsler.
Er der nogen der har et forslag til hvordan jeg evt. kan ændre inputmasken eller automatisk tilføjer datoen i fldTidDato til de to tidspunktfelter?
Private Sub fldTidFra_BeforeUpdate(Cancel As Integer)
If IsNull(Me.fldTidFra) Then Exit Sub If IsNull(Me.fldTidDato) Then MsgBox "Du skal først vælge en dato", vbInformation, "Dato" Me.fldTidFra = Null Exit Sub
End If
Me.fldTidFra = Me.fldTidDato & Me.fldTidFra End Sub
Men jeg får en fejl: "Den makro eller funktion, der er angivet for egenskaben FørOpdatering eller valideringsregel forhindrer Access i at gemme dataene i feltet".
Nu er det lagt på formularens FørOpdatering og jeg får ikke længere fejlmeddelelsen. Til gengæld får jeg nu dato og tidspunkt i feltet, hvis det får fokus og der er data i. Dette åbner for muligheden for at brugeren kan ændre datoen.
Ja, desværre. Jeg sidder og prøver at eksperimentere med at lægge to nye, ubundne felter (txtFra og txtTil) ind.
Jeg vil lægge en kode på VedAktuel der sætter indholdet til f.eks: If Not IsNull(Me.fldTidFra) Then Me.txtFra = Format(Me.fldTidFra, "hh:nn") - Og din foreslåede kode på FørOpdatering
If IsNull(Me.txtFra) Then Me.fldTidFra = Null Else If IsNull(Me.fldTidDato) Then MsgBox "Du skal først vælge en dato", vbInformation, "Dato" Me.txtFra = Null Me.fldTidDato.SetFocus Else Debug.Print Me.fldTidDato & " " & Me.txtFra & ":00" Me.fldTidFra = Me.fldTidDato & " " & Me.txtFra & ":00" End If End If
End Sub
Jeg prøvede først med + og uden ":00" men fik en type mismatch. Ser du nogen potentielle komplikationer ved denne løsning?
Ja, når det er strenge, du lægger sammen skal du bruge &, hvorimod du bruger + til at lægge tal (og datoer) sammen.
Jeg kan ikke umiddelbart se nogle faldgrubber - men der er mange mekanismer involveret, så jeg vil anbefale dig at prøve det grundigt af - både på nye og eksisterende poster og med underlige værdier osv.
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.