Avatar billede doto Nybegynder
04. august 2011 - 10:31 Der er 13 kommentarer og
1 løsning

Returnere år, uge og dag til et tal

Jeg har et felt i en forespørgsel som viser år-uge-dag. Jeg vil gerne have et tal i stedet for.
Fx. 11-17-3 bliver til 40660 og har datoen 27-04-2011. Det er let i Excel at omskrive en dato til et tal, men hvordan laver man et udtryk i Access som kan onskrive år-uge-dag til et tal?
Avatar billede Slettet bruger
04. august 2011 - 10:51 #1
har jeg forståde dig korekt du ønsker at få antal dag ud fra en given dato, så du får dagens nummer ?
Avatar billede Slettet bruger
04. august 2011 - 10:55 #2
clng(dato)
Avatar billede doto Nybegynder
04. august 2011 - 11:06 #3
Mit felt hedder: StrtSalg og det viser 11-17-3.
Altså år-uge-dag. Jeg vil gerne have et tal i stedet for, altså 40660.
Avatar billede Slettet bruger
04. august 2011 - 11:21 #4
=clng([StrtSalg])
Avatar billede Slettet bruger
04. august 2011 - 11:23 #5
eks.

Navn: StrtSalgTitel (du er nød til at lave navnet om, så det ikke er det samme som kontrolelementkilden)

Kontrolelementkilde: =clng([StrtSalg])
Avatar billede doto Nybegynder
04. august 2011 - 11:29 #6
=clng([StrtSalg]) giver tallet 11173 og ikke 40660.

11-17-3 er det samme som datoen 27-04-2011 og datoen har løbenumret 40660.

Det er tallet 40660 jeg er interesseret i.
Avatar billede Slettet bruger
04. august 2011 - 12:05 #7
hvordan hænger 11-17-3 sammen med 27-04-2011?~)
Avatar billede doto Nybegynder
04. august 2011 - 13:14 #8
11-17-3
År-uge-dag

År:2011, uge:17, dag:3

Det er det samme som den 27. april 2011.
Avatar billede fdata Forsker
07. august 2011 - 13:38 #9
Har gravet lidt ned i noget gammel kode. Prøv denne her:

Function ÅrUgeDag_Til_Integer(År As Integer, Uge As Integer, Dag As Integer) As Long
  Dim StartDato As Date
  Dim DagsKorrektion As Integer

  StartDato = DateSerial(År, 1, 1)
  DagsKorrektion = Weekday(StartDato, vbMonday) - 1
  If DagsKorrektion > 3 Then DagsKorrektion = DagsKorrektion - 7
       
  ÅrUgeDag_Til_Integer = CLng(StartDato + (Uge - 1) * 7 + (Dag - 1) - DagsKorrektion)
End Function

Sub Test
  Debug.Print ÅrUgeDag_Til_Integer(11, 17, 3)
End Sub
Avatar billede Slettet bruger
07. august 2011 - 16:16 #10
Sorry, jeg havde glemt alt om dette spm!~)

fdata's funktion virker og du kan aktivere det med EfterOpdaterings hændelsen, det nemmeste vil nok være at lave et ekstra felt i din tabel, som kan indeholde dit nummer. Så er det også nemt at lave søge funktioner..
Avatar billede doto Nybegynder
08. august 2011 - 16:43 #11
Hej fdata,

Tak for svaret.


Til spg: Tak for hjælpen. Jeg har et spørgsmål ude på 200 points: http://www.eksperten.dk/spm/944237#reply_7817667

som jeg venter svar på, men som endnu ikke er modtaget. Hvis du samler på points, kan du sende et svar på dette spørgsmål...
Avatar billede Slettet bruger
08. august 2011 - 23:49 #12
næh.. jeg samler ikke mere!~)

...du må dog ikke uddele mere end 200p samlet for et spm...

...og de tilhører vel egentlig brugereksperten!~)
Avatar billede doto Nybegynder
09. august 2011 - 07:29 #13
Hej spg,

Du har ret.
Tak for hjælpen!
Avatar billede fdata Forsker
11. august 2011 - 20:49 #14
... og tak for point herfra ;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