Avatar billede itumpe Nybegynder
24. marts 2009 - 09:55 Der er 15 kommentarer

Dato for mandag i aktuel uge

Jeg har brug for en stump kode, der viser datoen for mandag i den aktuelle uge.

Eksempel:

Hvis jeg bruger mit system i dag (tirsdag 24. marts), skal systemet vise mandag 23. marts.
Avatar billede Slettet bruger
24. marts 2009 - 11:39 #1
date-format(date,"w",vbMonday)+1
Avatar billede hugopedersen Nybegynder
24. marts 2009 - 11:54 #2
Følgende skulle kunne finde en hvilken som helst dagnummer i den uge hvor en dato falder. Det er noget gammelt kode, så checke det lige.

Public Function fhpDate_Week_Day_Date(intWeek_Day As Integer, datDate As Date) As Date
' -----------------------------------------------------------------------------------
' Purpose    : Returnerer dato for intWeek_Day i uge hvor datDate falder
' Parameters :
' Returns    : Date
' Created    :
' Modified  :
' Remarks    : Pas på datoformat ved kald til funktion
' -----------------------------------------------------------------------------------
On Error GoTo Error_fhpDate_Week_Day_Date
  Dim intDays As Integer
 
  intDays = Weekday(datDate, vbUseSystemDayOfWeek)
  If intDays > intWeek_Day Then
    intDays = (intDays - intWeek_Day) * -1
  End If
  If intDays = intWeek_Day Then
    intDays = 0
  End If
  datDate = DateAdd("d", intDays, datDate)

Exit_fhpDate_Week_Day_Date:
  fhpDate_Week_Day_Date = datDate
  Exit Function

Error_fhpDate_Week_Day_Date:
  datDate = Date
  Select Case Err.Number
    Case 3021
    Case 2501
    Case Is < 0
    Case Else
      MsgBox Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error in procedure 'fhpDate_Week_Day_Date'"
  End Select
  Resume Exit_fhpDate_Week_Day_Date

End Function
Avatar billede mugs Novice
24. marts 2009 - 11:54 #3
Skal den også vise MAN 23 MAR, hvis du bruger systemet ONS 25 MAR?

Og med system, mener du så systemets globale dato eller din db?
Avatar billede Slettet bruger
24. marts 2009 - 12:37 #4
hvis du bruger date-format(date,"w",vbMonday)+1  i et felt eller i en forespørgsel, hedder det date-format(date;"w";vbMonday)+1
Avatar billede itumpe Nybegynder
24. marts 2009 - 12:45 #5
"Skal den også vise MAN 23 MAR, hvis du bruger systemet ONS 25 MAR?

Og med system, mener du så systemets globale dato eller din db?"

1) Ja, hvis det er onsdag, skal jeg også have returneret mandag i den aktuelle uge.

2) Det er den faktiske dato, på den dag som brugeren bruger systemet, som er udgangspunktet.
Avatar billede Slettet bruger
24. marts 2009 - 14:06 #6
har du prøvet mit forslag?~)

evt. i immediate window i vba editoren:
msgbox date-format(date,"w",vbMonday)+1
Avatar billede Slettet bruger
24. marts 2009 - 14:06 #7
det virker fint!~)
Avatar billede itumpe Nybegynder
24. marts 2009 - 15:01 #8
Ikke for mig! :-)


Jeg vil gerne skrive udtrykket i "standardværdi" under egenskaber. Hvis jeg skriver dit udtryk skifter udtrykket til fælgende:

=[date]-Format([date];"w";[vbMonday])+1

og når jeg åbner formet vises ?navn
Avatar billede hugopedersen Nybegynder
24. marts 2009 - 15:20 #9
Det er fordi du ikke kan bruge de indbyggede konstanter hvis du bruger det på den måde - spørg mig ikke hvorfor.

Prøv at skrive =Date()-Format(Date();"w";2)+1  så skal du bare se
Avatar billede mugs Novice
24. marts 2009 - 15:39 #10
Hugo > Det fungerer perfekt.
Avatar billede hugopedersen Nybegynder
24. marts 2009 - 15:43 #11
mugs> har du nogen forklaring på det med de indbyggede konstanter? Det er ikke første gang jeg har bandet over det kan jeg betro dig :-)
Avatar billede mugs Novice
24. marts 2009 - 15:54 #12
Nej det har jeg ikke.
Det er ulogisk, hvis du under funktioner ser på Date, så hedder det Date, men det godtages ikke af Access. Det skal være Date()
Avatar billede mugs Novice
24. marts 2009 - 16:06 #13
Jeg kan ikke huske hvor jeg har læst det, men sandsynligvis her på eksperten. Det går ud på, at de er forskellige grupper af programmører der skriver programmerne, og disse grupper er ikke altid lige enige om syntaksen i koderne og derved kan der opstå forskelligheder. Det svarer vel nærmest til at lade jyder skrive en roman sammen med københavnere, og hver især skriver med den dialekt der nu engang er deres.

Jeg garanterer absolut ikke for det sandfærdige i historien. Den samme funktion ligger også i VBA, og bemærk det hedder Datre uden ()

Function FirstOfWeek(Optional dteDate As Date) As Date
' Assuming Sunday is first day of week.
If CLng(dteDate) = 0 Then
dteDate = Date
End If
FirstOfWeek = dteDate - Weekday(dteDate) + 1
End Function
Avatar billede itumpe Nybegynder
24. marts 2009 - 16:19 #14
Jeg har selv løst udfordringen. Følgende ser ud til at virke:

=IIf(Weekday(Date())=1;Date()-Weekday(Date()+7)+2;Date()-Weekday(Date())+2)
Avatar billede hugopedersen Nybegynder
24. marts 2009 - 19:59 #15
mugs> Du har nok ret i at det nok er en jyde og en kjøvenhavner der har haft fingre i det kode :-) (jeg vil godt indrømme at jeg er jyde)
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