Avatar billede Slettet bruger
18. januar 2008 - 19:47 Der er 9 kommentarer og
1 løsning

Hjælp til dette

Hej.....

Det jeg skal kunne er når 1 person bliver meldt ind bliver der skrivet en dato i feltet [Indmeldt] og ud fra den dato udregnes det antal år som personen har været medlem til D.D. og bliver vist i Tekst felt.


Dette stå i tekstfeltet:

=DateDiff("yyyy";[Indmeldt];Now())+Int(Format(Now();"mmdd")<Format([Indmeldt];"mmdd"))


Når så person melder sig ud, skal jeg skrive en ny dato i feltet [Udmeldelsesdato] og så skal Tekst feltet vise datediff mellem [indmeldt] og [udmeldelsesdato] og ikke som før.
Avatar billede fdata Forsker
19. januar 2008 - 10:51 #1
i formularens VBA skriver du i hændelsen VedAktuel/OnCurrent:

If Not Me.NewRecord Then
  Iif IsNull(Me.udmeldelsesdato) Then
    Me.Feltnavn=DateDiff("yyyy";[Indmeldt];Now())+Int(Format(Now();"mmdd")<Format([Indmeldt];"mmdd"))
  Else
    Me.Feltnavn=DateDiff("yyyy";[Indmeldt];[udmeldelsesdato])+Int([udmeldelsesdato];"mmdd")<Format([Indmeldt];"mmdd"))
  End If
EndIf

Husk at rette Me.Feltnavn til navnet på dit beregnede felt.

.. og så skal du vel også beregne feltet, når du har indtastet i Udmeldelsesdato. Det kan du gøre ved at lægge koden i Udmeldelsesdatos EfterOpdatering/AfterUpdate hændelse.
Avatar billede Slettet bruger
20. januar 2008 - 10:31 #2
tak for hjælpen

men kan jeg også for vist månder i samme kode
Avatar billede Slettet bruger
21. januar 2008 - 21:02 #3
der er 20 point til den som kan sige mig om jeg også kan få vist Månder i samme kode

så der kommer til at stå XX År og XX månder
Avatar billede fdata Forsker
23. januar 2008 - 14:12 #4
Det bliver nok mere overskueligt med en lille funktion i stil med:

Function DatoForskel(D1 As Date, D2 As Date) As String
  Dim MånederIalt As Long
  Dim AntalMåneder As Long
  Dim AntalÅr As Long
 
  MånederIalt = DateDiff("m", D1, D2)
  AntalÅr = Int(MånederIalt / 12)
  AntalMåneder = MånederIalt - (AntalÅr * 12)
  DatoForskel = AntalÅr & " år og " & AntalMåneder & " måneder"
End Function

Dit udtryk bliver så meget enklere:

If Not Me.NewRecord Then
  Iif IsNull(Me.udmeldelsesdato) Then
    Me.Feltnavn=DatoForskel(Me.Indmeldt,Date)
  Else
    Me.Feltnavn=DatoForskel(Me.Indmeldt,Me.Udmeldelsesdato)
  End If
EndIf
Avatar billede Slettet bruger
23. januar 2008 - 17:48 #5
Hvor skal det skrives ind?????
Avatar billede fdata Forsker
30. januar 2008 - 15:52 #6
Funktionen kan du lægge i et vilkårligt modul.
Selve udtrykket lægger du som tidligere beskrevet i formularens VedAktuel/OnCurrent hændelse.

Takker for point  ;o)
Avatar billede Slettet bruger
30. januar 2008 - 17:53 #7
Jeg kan ikke få det til at virke
Avatar billede fdata Forsker
05. februar 2008 - 14:07 #8
- Opret et nyt modul, paste funktionens kode ind og gem modulet (navnet er ligegyldigt)
- I formularens VedAktuel/OnCurrent hændelse skriver anden halvdel af koden (altså fra "If Not Me.NewRecord ...")

Der er ikke mere i det. Ellers må du prøve at forklare nærmere.
(Du har allerede accepteret spm; men du skal jo have valuta for dine point)
Avatar billede Slettet bruger
22. februar 2009 - 23:37 #9
Kan denne ikke også skrive Månder + år

If Not Me.NewRecord Then
  Iif IsNull(Me.udmeldelsesdato) Then
    Me.Feltnavn=DateDiff("yyyy";[Indmeldt];Now())+Int(Format(Now();"mmdd")<Format([Indmeldt];"mmdd"))
  Else
    Me.Feltnavn=DateDiff("yyyy";[Indmeldt];[udmeldelsesdato])+Int([udmeldelsesdato];"mmdd")<Format([Indmeldt];"mmdd"))
  End If
EndIf

Husk at rette Me.Feltnavn til navnet på dit beregnede felt.

.. og så skal du vel også beregne feltet, når du har indtastet i Udmeldelsesdato. Det kan du gøre ved at lægge koden i Udmeldelsesdatos EfterOpdatering/AfterUpdate hændelse
Avatar billede Slettet bruger
07. september 2011 - 18:14 #10
Hej igen

Hvad skal jeg skrive vis jeg også vil ha at antal dage også kommer med i denne kode

Function DatoForskel(D1 As Date, D2 As Date) As String
  Dim MånederIalt As Long
  Dim AntalMåneder As Long
  Dim AntalÅr As Long
 
  MånederIalt = DateDiff("m", D1, D2)
  AntalÅr = Int(MånederIalt / 12)
  AntalMåneder = MånederIalt - (AntalÅr * 12)
  DatoForskel = AntalÅr & " år og " & AntalMåneder & " måneder"
End Function

Dit udtryk bliver så meget enklere:

If Not Me.NewRecord Then
  Iif IsNull(Me.udmeldelsesdato) Then
    Me.Feltnavn=DatoForskel(Me.Indmeldt,Date)
  Else
    Me.Feltnavn=DatoForskel(Me.Indmeldt,Me.Udmeldelsesdato)
  End If
EndIf

MVH CB
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