11. februar 2007 - 01:47Der 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.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
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
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.
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
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
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
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
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.
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
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
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
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
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
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.