Avatar billede dane022 Seniormester
11. februar 2007 - 01:47 Der er 38 kommentarer og
1 løsning

Lægge måneder til dato flere gange

I en formular skal man kunne oprette en opgave og samtidig vælge hvor mange gange den skal forekomme og med hvor mange måneders mellemrum. Meget ligesom en kalender.

Feltet med måneders mellemrum er me.hyppighed.
Feltet med antal forekomster er me.forekomster.
Tabellen det alt sammen skal overføres til, hedder opgaver.

Jeg regner med at koden skal ligge i en kommandoknap, men hvis der er nogen der har en bedre id, så er jeg lydhør.
Avatar billede dane022 Seniormester
11. februar 2007 - 02:30 #1
Og forresten feltet på den dato det skal lægges til, er me.startdato
Avatar billede kabbak Professor
11. februar 2007 - 08:39 #2
noget i denne retning, i formularens modul

Dim Dato As Date, I As Integer
Dato = Me.startdato
For I = 1 To Val(Me.forekomster)
DoCmd.RunSQL "insert into opgaver datofelt values( #" & Dato & "#)"
Dato = Dato + DateSerial(0, Val(Me.hyppighed), 0)
Next
Avatar billede kabbak Professor
11. februar 2007 - 08:52 #3
denne burde virke, men regner forkert ved mig, kan du eller andre bage videre på den.

  Dim Dato As Date, I As Integer
    Dato = DateValue(Me.Startdato)
    For I = 1 To Val(Me.forekomster)
        DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt )SELECT  #" & Dato & "#"
        Dato = Dato + DateSerial(0, Val(Me.hyppighed), 0)
    Next
Avatar billede terry Ekspert
11. februar 2007 - 10:12 #4
Try altering
Dato = Dato + DateSerial(0, Val(Me.hyppighed), 0)

To
Dato = DateAdd("m", Val(me.hyppighed), Dato)
Avatar billede kabbak Professor
11. februar 2007 - 11:07 #5
selvfølgelig terry, jeg byttede om på DateSeria og DateAdd
Avatar billede terry Ekspert
11. februar 2007 - 11:14 #6
well it was rather early you placed your answer, so maybe you werent fully awake :o)

Have a good sunday everyone
Avatar billede kabbak Professor
11. februar 2007 - 11:18 #7
i ligemåde terry ;-))
Avatar billede dane022 Seniormester
11. februar 2007 - 12:03 #8
Tak for alle indlæggene

Men det der sker er at hvis jeg vælger startdato 1/1-2007 og hyppighed 2 hver anden måned, så bliver startdato for de 2 næste records 3/1-2007 og 5/1-2007.
Så den lægger det til dagen istedet for måned.
Avatar billede terry Ekspert
11. februar 2007 - 12:16 #9
depend on th edate format
5/1-2007 is mm/dd/yyyy i would think
Avatar billede dane022 Seniormester
11. februar 2007 - 12:17 #10
formattet i dato er dd-mm-yy. Hvordan skal koden så se ud?
Avatar billede terry Ekspert
11. februar 2007 - 12:18 #11
DateAdd("m", Val(me.hyppighed), Dato) is adding 2 months to what ever date is in dato
Avatar billede terry Ekspert
11. februar 2007 - 12:26 #12
after this line

Dato = DateValue(Me.Startdato)

put this line o fcode so we can see what date you are actually getting

Msgbox Format(dato, "yyyy/mm/dd")
Avatar billede dane022 Seniormester
11. februar 2007 - 12:29 #13
dato 1/1-2008, kommer til at hedde 2008-01-01
Avatar billede dane022 Seniormester
11. februar 2007 - 12:40 #14
det skal så lige siges at 1/2-2007 bliver til 2007-02-01
Avatar billede kabbak Professor
11. februar 2007 - 12:40 #15
ret sql linien til denne


DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt )SELECT  #" & format(Dato,"dd-mm-yyyy") & "#"
Avatar billede kabbak Professor
11. februar 2007 - 12:41 #16
Du skal også se på datofeltet i tabellen, om den er sat op til denne format
Avatar billede dane022 Seniormester
11. februar 2007 - 12:44 #17
Kabbak: det gør at alle records får startdato = startdato, dvs. der bliver ikke lagt noget til. Koden ser sådan ud nu:

Private Sub CreateNewIssue_Click()
Dim Dato As Date, I As Integer
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdSaveRecord
    Dato = DateValue(Me.Startdato)
    MsgBox Format(Dato, "yyyy/mm/dd")
    For I = 1 To Val(Me.Forekomster)
        DoCmd.RunSQL "INSERT INTO [Opgaver totalt] ( startdato )SELECT  #" & Format(Dato, "dd-mm-yyyy") & "#"
        Startdato = DateAdd("m", Val(Me.Hyppighed), Startdato)
    Next
DoCmd.SetWarnings True
End Sub
Avatar billede dane022 Seniormester
11. februar 2007 - 12:46 #18
startdato i formularen og feltet startdato i tabellen, har samme format. Kort datoformat
Avatar billede terry Ekspert
11. februar 2007 - 12:50 #19
11/02-2007 12:29:42
try another date than 1/1/2007 you cant see what is month or day

13/01/2007 for example
Avatar billede kabbak Professor
11. februar 2007 - 12:50 #20
Dato = DateAdd("m", Val(Me.Hyppighed), Startdato)
Avatar billede terry Ekspert
11. februar 2007 - 12:52 #21
we need to make sure that the date being entered is getting converetd to a date in the correct format.
Avatar billede dane022 Seniormester
11. februar 2007 - 12:54 #22
13/01/2007 bliver til 2007-01-13
Avatar billede kabbak Professor
11. februar 2007 - 12:56 #23
Private Sub Kommandoknap6_Click()
    Dim Dato As Date, I As Integer
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
    For I = 1 To Val(Me.forekomster)
        DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "'"
      Dato = DateAdd("m", Val(Me.hyppighed), Dato)
    Next
End Sub
Avatar billede kabbak Professor
11. februar 2007 - 12:58 #24
har du sat Me.Startdato, til at væte et datofelt

Private Sub CreateNewIssue_Click()
Dim Dato As Date, I As Integer
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdSaveRecord
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
  ' MsgBox Format(Dato, "yyyy/mm/dd")
    For I = 1 To Val(Me.Forekomster)
          DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "'"
        Startdato = DateAdd("m", Val(Me.Hyppighed), Startdato)
    Next
DoCmd.SetWarnings True
End Sub
Avatar billede kabbak Professor
11. februar 2007 - 12:59 #25
denne linie
DoCmd.RunCommand acCmdSaveRecord
mener jeg ikke du behøver
Avatar billede kabbak Professor
11. februar 2007 - 13:01 #26
Der var lige noget der ikke var retter, skulle være i orden nu

Private Sub CreateNewIssue_Click()
Dim Dato As Date, I As Integer
DoCmd.SetWarnings False
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
  ' MsgBox Format(Dato, "yyyy/mm/dd")
    For I = 1 To Val(Me.Forekomster)
          DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "'"
      Dato  = DateAdd("m", Val(Me.Hyppighed),Dato )
    Next
DoCmd.SetWarnings True
End Sub
Avatar billede dane022 Seniormester
11. februar 2007 - 13:02 #27
Da Startdato = DateAdd("m", Val(Me.Hyppighed), Startdato) blev lavet om til
Dato = DateAdd("m", Val(Me.Hyppighed), Startdato), skete der det at den første record korrekt blev 13/3/2007 (startdato 13/1/2007, forekomster 5), men de øvrige 4 records blev også 13/3/2007.
Avatar billede dane022 Seniormester
11. februar 2007 - 13:05 #28
Nu begynder det at ligne noget
Avatar billede dane022 Seniormester
11. februar 2007 - 13:06 #29
Hvis jeg f.eks. skal have overført me.emne til de records der bliver dannet, hvordan skal det så se ud?
Avatar billede kabbak Professor
11. februar 2007 - 13:07 #30
DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt, EmmeFelt )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "'," & me.emmne
Avatar billede dane022 Seniormester
11. februar 2007 - 13:16 #31
Ang. emne. Når jeg trykker på kommandoknappen, får jeg besked om at jeg skal indtaste parameterværdi. Lige ovenover det jeg skal skrive, står der det jeg har skrevet i emnefeltet i formularen. Koden:

Dim Dato As Date, I As Integer
DoCmd.SetWarnings False
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
    MsgBox Format(Dato, "yyyy/mm/dd")
    For I = 1 To Val(Me.Forekomster)
          DoCmd.RunSQL "INSERT INTO [Opgaver totalt] ( startdato, Emne )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "'," & Me.Emne
      Dato = DateAdd("m", Val(Me.Hyppighed), Dato)
    Next
DoCmd.SetWarnings True
Avatar billede kabbak Professor
11. februar 2007 - 13:16 #32
eller måske sådan

DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt, EmmeFelt )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "','" & me.emmne & "'"
Avatar billede kabbak Professor
11. februar 2007 - 13:19 #33
denne virker her

Dim Dato As Date, I As Integer
DoCmd.SetWarnings False
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
    For I = 1 To Val(Me.forekomster)
DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt, EmmeFelt )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "','" & Me.emmne & "'"
Dato = DateAdd("m", Val(Me.hyppighed), Dato)
    Next
DoCmd.SetWarnings True
Avatar billede dane022 Seniormester
11. februar 2007 - 13:20 #34
Nu får jeg at vide at der er en syntaksfejl, med løsningen 13:16:25
Avatar billede dane022 Seniormester
11. februar 2007 - 13:24 #35
For mig at se, ser koderne ens ud, på nær lige at nogle af felterne har et andet navn hos dig
Avatar billede kabbak Professor
11. februar 2007 - 13:26 #36
Dim Dato As Date, I As Integer
    DoCmd.SetWarnings False
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
    For I = 1 To Val(Me.forekomster)
        DoCmd.RunSQL "INSERT INTO Opgaver ( Datofelt, Emne )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "','" & Me.emmne & "'"
        Dato = DateAdd("m", Val(Me.hyppighed), Dato)
    Next
    DoCmd.SetWarnings True



Nu skulle felterne være ens
Feltet Emne, skal være et tekstfelt
Avatar billede kabbak Professor
11. februar 2007 - 13:29 #37
Dim Dato As Date, I As Integer
    DoCmd.SetWarnings False
    Dato = Format(Me.Startdato, "dd-mm-yyyy", vbMonday, vbFirstFourDays)
    For I = 1 To Val(Me.forekomster)
        DoCmd.RunSQL "INSERT INTO Opgaver ( StartDato, Emne )SELECT  '" & Format(Dato, "dd-mm-yyyy") & "','" & Me.emne & "'"
        Dato = DateAdd("m", Val(Me.hyppighed), Dato)
    Next
    DoCmd.SetWarnings True
Avatar billede dane022 Seniormester
11. februar 2007 - 13:31 #38
På en eller anden måde gjorde det forskellen, jeg kan bare ikke lige få øje på hvad det var, men det er måske heller ikke så vigtig. ak for hjælpen begge, i må gerne smide et svar
Avatar billede kabbak Professor
11. februar 2007 - 13:33 #39
et svar ;-))
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