Avatar billede jens Nybegynder
25. juli 2000 - 22:18 Der er 3 kommentarer og
1 løsning

Indsæt datoer automatisk

Hej

Hvis jeg ønsker at skrive ét helt års datoer ind i en tabel.


id  dato        bla.
1  o1-01-2000  tekst
2  o1-02-2000  tekst

osv.

Kan det ikke gøres pr. automatik ?

- Jens
Avatar billede lkp Nybegynder
25. juli 2000 - 22:36 #1
Hej Jens

Jo... Næsten automatisk

Jeg har lavet en funktion, du kan paste ind i din database.

Den kaldes på flg. måde:

YearAdd 2000, \"tblTabel\", \"fldDato\"

2000 er det år du vil fylde tabellen med datoer fra.

tblTabel er navnet på den tabel du vil fylde

fldDato er navnet på det felt du vil skrive datoen i. (Feltet skal være et dato felt).

--- Kode Start ---

Public Function YearAdd(nYear As Integer, strTabel As String, strField As String)
   
    Dim rstYear As Recordset
    Dim dtDate As Date
    Dim dtStart As Date
    Dim dtEnd As Date
   
    Set rstYear = CurrentDb.OpenRecordset(strTabel)
    dtStart = DateSerial(nYear, 1, 1)
    dtEnd = DateSerial(nYear, 12, 31)
       
    For dtDate = dtStart To dtEnd
        rstYear.AddNew
        rstYear(strField) = dtDate
        rstYear.Update
    Next dtDate
         
End Function

--- Kode Slut ---

Håber at ovenstående løser dit problem, ellers skriv igen.

Med venlig hilsen

LKP
Avatar billede jens Nybegynder
25. juli 2000 - 23:02 #2
Hej Ikp

Nu er jeg ikke den store haj til Access - hvor skal jeg paste denne kode henne ?

Bare et lille tillægsspørgsmål - kunne man lave din kode sådan at den kun lagde datoer ind i arbejdsdage ? - altså ikke lørdag og søndag.

Hilsen
Jens
Avatar billede lkp Nybegynder
25. juli 2000 - 23:16 #3
Hej Jens

Koden kan laves så den kun tager arbejdsdage med. Se koden nedenfor.

Den nye funktion kaldes på flg måde:

YearAdd2 2000, true ,\"tblTest\",\"Dato\"

Stort set det samme som før, dog angiver true at du kun vil tilføje arbejdsdage, hvis du vil have alle dage med, skal du istedet skrive false.

For at benytte koden, skal du oprette et nyt modul og kopiere koden ind i dette.

Når du skal eksekvere koden kan du enten ligge koden bag f.eks. en knap på en form, eller du kan trykke ctrl+g for at få imediate vinduet frem. Her skriver du linjen YearAdd2 2000... osv., og trykke enter.

--- Kode Start ---

Public Function YearAdd2(nYear As Integer, blWorkWeek As Boolean, strTabel As String, strField As String)
   
    Dim rstYear As Recordset
    Dim dtDate As Date
    Dim dtStart As Date
    Dim dtEnd As Date
   
    Set rstYear = CurrentDb.OpenRecordset(strTabel)
    dtStart = DateSerial(nYear, 1, 1)
    dtEnd = DateSerial(nYear, 12, 31)
       
    For dtDate = dtStart To dtEnd
        If (Weekday(dtDate) <> vbSaturday And Weekday(dtDate) <> vbSunday) Or blWorkWeek = False Then
            rstYear.AddNew
            rstYear(strField) = dtDate
            rstYear.Update
        End If
    Next dtDate
         
End Function

--- Kode Slut ---

Håber at ovenstående hjælper dig videre, ellers skriv igen.

Med venlig hilsen

LKP

Håber at ovenstående
Avatar billede jens Nybegynder
26. juli 2000 - 23:08 #4
Hej LKP

Tak for hjælpen :-)

Hilsen
Jens
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