Avatar billede 2dbornot2db Nybegynder
02. maj 2005 - 20:44 Der 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.

Jeg har felterne:
fldTidDato (datatype: smalldatetime)
fldTidFra  (datatype: smalldatetime)
fldTidTil  (datatype: smalldatetime)

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?

På forhånd tak!
02. maj 2005 - 20:48 #1
På formularen (hvor du indtaster) kan du lægge denne kode på tekstboksens FørOpdatering:

Me!fldTidDato = Date+Me!fldTidDato

(I stedet for Date, kan du referere til et andet felt eller en anden dato)
Avatar billede 2dbornot2db Nybegynder
02. maj 2005 - 20:54 #2
Jeg har nu lagt følgende kode ind:

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".

Debug angiver den nederste linie som problemet.
02. maj 2005 - 20:58 #3
hmm, ja det skulle nok have været på EfterOpdatering i stedet.

I virkeligheden bør koden nok lægges på formularens FørOpdatering.

Jeg tror nok også, at du skal bruge + i stedet for &:

Me.fldTidFra = Me.fldTidDato + Me.fldTidFra
Avatar billede 2dbornot2db Nybegynder
02. maj 2005 - 21:05 #4
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.
02. maj 2005 - 21:08 #5
hmm, ja det er ganske rigtigt en uhensigtsmæssighed i Access. Gælder det også hvis du har inputmaske på?
Avatar billede 2dbornot2db Nybegynder
02. maj 2005 - 21:15 #6
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
02. maj 2005 - 21:22 #7
ok....lad mig høre resultatet
Avatar billede 2dbornot2db Nybegynder
02. maj 2005 - 21:25 #8
Af en eller anden grund virker følgende:

Private Sub txtFra_AfterUpdate()

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?
02. maj 2005 - 21:46 #9
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.
Avatar billede 2dbornot2db Nybegynder
02. maj 2005 - 21:46 #10
OK, tak for hjælpen!
02. maj 2005 - 21:47 #11
jamen selv tak - det var da så lidt :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