Avatar billede bnordal Nybegynder
22. juli 2004 - 10:36 Der er 29 kommentarer og
1 løsning

DatePart("ww", TmpDate, 2, 2)

Hei. Jeg skal konvertere valgtdato til uke. Jeg har koblet en combo box mot KalenderKontroller, hvor jeg velger dato. Jeg har så en tekst box som skal konvertere ValgtDato til rigtig Uge nummer. Jeg tror problemet er i access ikke i VB koden. Jeg må manuelt skrive inn et uge nummer for at den skal oppdatere til det rigtige.. hva gjør jeg feil??

"eks kode som er brugt."

Private Sub ValgtDato_AfterUpdate()
Dim TmpDate As Date
TmpDate = ValgtDato.Value
UkeNr.Value = DatePart("ww", TmpDate, 2, 2)
End Sub
22. juli 2004 - 10:41 #1
Er feltet ukenr bundet til tabellen?

Jeg tror, at jeg bare vil forenkle proceduren således:

Private Sub ValgtDato_AfterUpdate()

    Me!UkeNr = DatePart("ww", Me!ValgtDato, vbMonday, vbFirstFourDays)

End Sub
Avatar billede bnordal Nybegynder
22. juli 2004 - 11:28 #2
UkeNr er bundet til tabellene.
ValgtDato og UkeNr er en egen tabell som er koblet mot et Hovedskjema. Dette skjema skal hente dato + ukenr fra Kalenderkontrolleren. og gi data videre til Delskjema.

tror algoritmen er riktig. men er usikker på hendelsen er riktig. ValgtDato_AfterUpdate(), 

Jeg bruger din kode, men har fortsatt samme problem. Når jeg bytter dato oppdaterer ikke ukenr seg.. kanskje en sql Trigger?? ved Dato change?!
22. juli 2004 - 11:38 #3
Problemet er, at så snart en dato kommer for VBA, så byttes om på år, måned og dag.

Prøv denne:
Private Sub ValgtDato_AfterUpdate()

    Me!UkeNr = DatePart("ww", format(Me!ValgtDato, "yyyy-mm-dd"), vbMonday, vbFirstFourDays)

End Sub
Avatar billede bnordal Nybegynder
22. juli 2004 - 11:52 #4
Jeg bruker access 2000. om dette kan ha nogen betydning. Det fungerer fortsatt ikke.
TekstBoxen "UkeNr" viser ingen verdi. når jeg bytter dato i kontrolleren kommer det fortsatt ikke noen verdi inn i UkeNr feltet. Når jeg manuelt skriver en verdi inn så vises denne verdien også i delskjema.
22. juli 2004 - 11:55 #5
Hvad sker der, hvis du bare skriver:

Private Sub ValgtDato_AfterUpdate()

    Me!UkeNr = 888

End Sub
Virker det?

Hvad sker der, hvis du i Immidiate-vinduet skriver:
?DatePart("ww", date, vbMonday, vbFirstFourDays) (og trykker ENTER)
Avatar billede bnordal Nybegynder
22. juli 2004 - 12:02 #6
hvad er immidiate-vinduet? og i så fall er dette på egenskaper for "ukeNr" tekstboxen?
22. juli 2004 - 12:03 #7
Immidiate-vinduet kaldes også Debug-vinduet og fremkaldes ved at trykke Ctrl+G (det er formentlig allerede åbent i VBA-editoren)
Avatar billede bnordal Nybegynder
22. juli 2004 - 12:08 #8
Compile error.
Cant find project or library
22. juli 2004 - 12:10 #9
ok, så er det et helt andet sted, vi skal lede.

I VBA-editoren går du i menuen Tools->references og kontrollerer om der står MISSING ud fra nogle af de afkrydsede referencer.

Hvis der gør skal du enten erstatte krydset med en anden version af samme komponent eller helt fjerne det, hvis det ikke er noget, der skal bruges.
Avatar billede bnordal Nybegynder
22. juli 2004 - 12:15 #10
MISSING: Windows Common Controls-2 6.0 (SP4)
MISSING: Microsoft Office Web Components 11.0
MISSING: Microsoft Office XP Web Components

skal jeg bare fjerne krydset her?
22. juli 2004 - 12:15 #11
de plejer ikke at være der, så hvis du ikke har nnoget kode, som specifikt bruger dem, så væk med dem.
Avatar billede bnordal Nybegynder
22. juli 2004 - 12:20 #12
har nå prøvd med alle de algoritmer jeg tidligere har prøvd med men fortsatt intet..
22. juli 2004 - 12:57 #13
Får du stadig fejl, når du skriver denne i Immidiat-vinduet:

?DatePart("ww", date, vbMonday, vbFirstFourDays) (og trykker ENTER)
Avatar billede bnordal Nybegynder
22. juli 2004 - 13:40 #14
No får jeg opp dagens uge nr ja. retur fra systemet er 30 i immidiate vinduet
22. juli 2004 - 13:46 #15
ok, hvad med det andet forslag,jeg stillede. virker dette:

Private Sub ValgtDato_AfterUpdate()

    Me!UkeNr = 888

End Sub
Avatar billede bnordal Nybegynder
22. juli 2004 - 13:54 #16
nei. UkeNr tekstboxen blir fortsatt ikke oppdatert.
22. juli 2004 - 13:59 #17
Prøv at sætte et Breakpoint på linien
Me!UkeNr = 888

Breakpoint sættes ved at trykke F9, når du står på linien.

Derefter starter du formularen op og taster noget UkeNr og derefter en dato i ValgtDato og trykker ENTER.
Access skulle nu gerne stope koden på breakpointet, hvorefter du kan kører musen hen over Me!UkeNr for at se hvilken værdi der står i den.

Hvis det ikke svarer overens med det, som du selv har tastet så er der en fejl i navngivningen.
Avatar billede bnordal Nybegynder
22. juli 2004 - 14:17 #18
Private Sub ValgtDato_AfterUpdate()

    Me!UkeNr = 888

End Sub

er det alt som skal stå i funksjonen? Denne returnerer fortsatt ikke noen verdi til TekstBoxen.

når jeg bruker ?DatePart("ww", date, vbMonday, vbFirstFourDays)  i immidiate vinduet og bytter "date" med "ValgtDato" eller en tilfeldig dato så returneres riktig ukeNr. men dette bare i Immidiate vinduet, ikke i Access skjemaet.
22. juli 2004 - 14:19 #19
prøvede du det med Breakpoint?
Avatar billede bnordal Nybegynder
22. juli 2004 - 14:25 #20
Jeg er ikke med. Jeg setter BreakPoint og opner skjema i Access men ingen forandring. vet ikke hva du mener med "derefter starter du Formularen.."

men tror ikke det er fejl ved navngivning
22. juli 2004 - 14:30 #21
Skjema? Er det ikke en formular (Form)?

Du skal starte formen og indtaste noget i UkeNr og derefter i valgtDato. Når du trykker ENTER på den sidste, skal du gerne hoppe over i VBA på den linie, som har Breakpointet. Hvis det ikke sker, så vil jeg anbefale dig at slette feltet ValgtDato og oprette det igen forfra.
Avatar billede bnordal Nybegynder
22. juli 2004 - 14:37 #22
det er et "Access Form". Jeg skal velge en Dato, også skal UkeNr automatisk returneres til TextBox "UkeNr" etter dato er valgt, er ikke sikkert det lar seg gjøre..  Takker så mye for hjelpen Thomas, jeg må bare prøve videre..

det er første gangen jeg lager et access program. Og dette er siste gjenstående hinder  :)
22. juli 2004 - 14:41 #23
Der er normalt ingen problemer i at lave det....men det kan være meget små detaljer som gør, at det ikke virker. Og det er næsten umuligt for mig at gætte hvad der kan være galt.

De forskellige ting, som jeg bad dig afprøve var blot for at prøve at lokalisere fejlen....

Du er velkommen til at sende databasen til mig, så kan jeg kigge på den (husk at angive hvilken form det er)
Avatar billede bnordal Nybegynder
22. juli 2004 - 14:49 #24
Kanskje det kan være en feil i forhold til retur data. Jeg har satt UkeNr til et Tall. kanskje den skulle vært satt til Date eller String
22. juli 2004 - 14:52 #25
Det tror jeg ikke...
Det som undre mig, er at der slet ikke kommer en fejlmeddelelse. Det ville der gøre hvis der var forkert dataype eller andet
Avatar billede bnordal Nybegynder
22. juli 2004 - 14:55 #26
Får fejl melding om Duplicate values i Access når jeg manuelt legger inn et ukenr.
22. juli 2004 - 14:56 #27
Det skyldes noget helt andet (din tabelstruktur), og burde ikke have nogen indflydelse på det andet.
Avatar billede bnordal Nybegynder
23. juli 2004 - 10:06 #28
Hej. jeg har nå løst problemet. Problemet var i hvilken funksjon koden lå.

Jeg la ukenr konvertering kode linjen til Calendar_Click()
som her:

Private Sub ocxCalendar_Click()

ValgtDato.Value = ocxCalendar.Value
ValgtDato.SetFocus
ocxCalendar.Visible = False

UkeNr = DatePart("ww", ValgtDato, vbMonday, vbFirstFourDays)

End Sub

Takk for hjelpen..
23. juli 2004 - 11:01 #29
Super ! :o)

Lukker du så ikke lige spørgsmålet, så andre ikke går i gang med at læse det hele gennem for at hjælpe?
23. juli 2004 - 12:55 #30
takker :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