Avatar billede Slettet bruger
25. november 2004 - 11:31 Der er 23 kommentarer og
1 løsning

Generering af fremtidige poster

Okey jeg er lidt på dybt vand..
Jeg har lavet et program til styring af vedligeholdsafdelingen, dvs. de opgaver de skal udføre. Nogle af disse opgaver er periodiske og skal kunne genereres ud i fremtiden.
Det jeg har lavet er en formular, med ubundne felter, som med "Value" får de rette værdier. Derudover er der 2 lister, med simpel multiselect. Den ene liste er fra januar til december og den anden er der årstal. Tabellen som indeholder månederne har en kolonne med 01-01, 01-02, osv. Planen er så at man trykker på en knap så de fremtidige poster genereres, feltet dato bliver så sammensat som eks. 01-01-2005. (Det er nemlig fint at det bare er den første i måneden, som sættes til periode vedligehold).
Hjælp! 
!~)
Avatar billede terry Ekspert
25. november 2004 - 12:49 #1
Can you explain this please "01-01, 01-02, osv."

Does your month field contain for example 01-01 if so, why not just 01 or even 1 (january)
Avatar billede Slettet bruger
25. november 2004 - 12:57 #2
I just thought that I would make a month and a year that I could "glue" together with something like "Me.MonthCode" & "-" & "Me.Year". That could then become a short date, like 01-01-2005, yeah?
Avatar billede terry Ekspert
25. november 2004 - 14:03 #3
Ok I can see what you mean.
Without doing it for you you will need two loops one for the year list and another inside this loop for the month list.

Then for each year/month you need to insert the data into your table.

You can use something like

docmd.runsql "INSERT into YourTable (Dato) VALUES('" & ThisComesFromYourLists & "')"

ThisComesFromYourLists is the year and month list boxes
Avatar billede Slettet bruger
25. november 2004 - 14:22 #4
Ok I will tjeck it out!
Avatar billede Slettet bruger
25. november 2004 - 14:24 #5
By the way how do I specify that it´s the actived years/months that's in question...
Avatar billede Slettet bruger
25. november 2004 - 14:35 #6
Do you mean something like this:

Private Sub GenererOpgaver_Click()
Dim aar, maaneder

For aar = 2004 To aar = 2015
For maaneder = "januar" To maaneder = "december"

DoCmd.RunSQL "INSERT into Vedligehold (Dato) VALUES('" & maaneder.Column(1) & "-" & aar & "')"

Next maaneder
Next aar

End Sub

And if so how do I get the other fields in the same record. (prioritet, beskrivelse, type, afdeling, enhed, komponent, rekvirent)
Avatar billede terry Ekspert
25. november 2004 - 15:37 #7
OK, didnt quite understand! The other fields come from the form.

DoCmd.RunSQL "INSERT into Vedligehold (Dato, fld2...) VALUES('" & maaneder.Column(1) & "-" & aar & "', '" & Me.fld1 & ".... )"

This IS just an example, you need to use the correct field names.

arent you taking your month and year from listboxes?
Avatar billede Slettet bruger
25. november 2004 - 15:38 #8
yes
Avatar billede Slettet bruger
25. november 2004 - 15:48 #9
Nothing happens when I activate the button!

Private Sub GenererOpgaver_Click()
Dim Aar, Maaneder

For Aar = 2004 To Aar = 2015
For Maaneder = "januar" To Maaneder = "december"

DoCmd.RunSQL "INSERT into Vedligehold (Dato, prioritet, beskrivelse, type, afdeling, enhed, komponent, rekvirent) VALUES('" & Maaneder.Column(1) & "-" & Aar & "', '" & Me.Prioritet & "', '" & Me.Beskrivelse & "', '" & Me.Type & "', '" & Me.Afdeling & "', '" & Me.Enhed & "', '" & Me.Komponent & "', '" & Me.Rekvirent & "' )"

Next Maaneder
Next Aar

End Sub
Avatar billede terry Ekspert
25. november 2004 - 16:04 #10
I think you should change your month loop to numbers (1 to 12)

If you are taking the values from listboxes then you should actually loop throught the selected rows

I'm off home VERY shortly, I can take a look later maybe, but I am rather busy this evening.

Try looking in Access help on how to loop through selected rows in a listbox

something like

For i = 0 to Me.lstBox.ListCount - 1
  If Me.lstBox.selected(i) Then
    ...

  End if
Next i
Avatar billede terry Ekspert
26. november 2004 - 12:07 #11
hows it going spg?
Avatar billede Slettet bruger
26. november 2004 - 14:34 #12
Hi, the net went down but I'm back on. Here's what I got:

Private Sub GenererOpgaver_Click()

Dim i, j, Dato
For i = 0 To Me.Aar.ListCount - 1
For j = 0 To Me.Maaneder.ListCount - 1
  If Me.Aar.Selected(i) And Me.Maaneder.Selected(j) Then

  DoCmd.RunSQL "INSERT into Vedligehold (Dato, prioritet, beskrivelse, type, afdeling, enhed, komponent, rekvirent) VALUES('" & Me.Maaneder.Column(2) & "-" & Me.Aar.Column(0) & "', '" & Me.Prioritet & "', '" & Me.Beskrivelse & "', '" & Me.Type & "', '" & Me.Afdeling & "', '" & Me.Enhed & "', '" & Me.Komponent & "', '" & Me.Rekvirent & "' )"
  End If
Next j
Next i
End Sub

The problem now is that it saves all the records with the last combination of dates..?
Avatar billede Slettet bruger
26. november 2004 - 14:55 #13
Meaning if I select january, february, 2005 and 2006 then there will be generated 4 records where the date on all of them is 01-02-2006

...Buy the way I'm using an english version of Access and they would write 02-01-2006. I might be in trouble with my db...
Going to tjeck
Avatar billede Slettet bruger
26. november 2004 - 15:08 #14
It seems ok
Avatar billede terry Ekspert
26. november 2004 - 17:34 #15
Little problem with the loops I think!

Private Sub GenererOpgaver_Click()

Dim i, j, Dato
For i = 0 To Me.Aar.ListCount - 1

If Me.Aar.Selected(i) THen

For j = 0 To Me.Maaneder.ListCount - 1
  If Me.Maaneder.Selected(j) Then

  DoCmd.RunSQL "INSERT into Vedligehold (Dato, prioritet, beskrivelse, type, afdeling, enhed, komponent, rekvirent) VALUES('" & Me.Maaneder.Column(2) & "-" & Me.Aar.Column(0) & "', '" & Me.Prioritet & "', '" & Me.Beskrivelse & "', '" & Me.Type & "', '" & Me.Afdeling & "', '" & Me.Enhed & "', '" & Me.Komponent & "', '" & Me.Rekvirent & "' )"
  End If
Next j

End if

Next i
End Sub


and if you can format the date yyyy-mm-dd then it should work. Th edate format depends on your regional settings not your Access version
Avatar billede Slettet bruger
29. november 2004 - 08:25 #16
NO.... it still saves all the records with the last date???
!~(
Avatar billede terry Ekspert
29. november 2004 - 09:54 #17
can yousend me your dB and I will take a look?

eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede Slettet bruger
29. november 2004 - 11:24 #18
Its off to eksperten@santhell.dk, thanks !~)
Avatar billede terry Ekspert
29. november 2004 - 19:53 #19
Hi spg

I think this works

Private Sub GenererOpgaver_Click()

Dim i As Integer, j As Integer, Dato As Date
Dim sSQL As String

For i = 0 To Me.Aar.ListCount - 1

If Me.Aar.Selected(i) Then

DoCmd.SetWarnings False
For j = 0 To Me.Maaneder.ListCount - 1
  If Me.Maaneder.Selected(j) Then

    Dato = DateSerial(Me.Aar.Column(0), Me.Maaneder.Column(2), 1)
    sSQL = "INSERT into Vedligehold (Dato, prioritet, beskrivelse, type, afdeling, enhed, komponent, rekvirent) VALUES('" & Dato & "', '" & Me.Prioritet & "', '" & Me.Beskrivelse & "', '" & Me.Type & "', '" & Me.Afdeling & "', '" & Me.Enhed & "', '" & Me.Komponent & "', '" & Me.Rekvirent & "' )"
    DoCmd.RunSQL sSQL
   
  End If

Next j
DoCmd.SetWarnings True


End If

Next i
End Sub
Avatar billede Slettet bruger
30. november 2004 - 08:46 #20
I'm really sorry to say this.... No..
I appreciate the work you are doing, it's become a real problem.
Hope you or someone can do it 'cause I'm lost.  !~)
Avatar billede terry Ekspert
30. november 2004 - 18:10 #21
what doesnt work?
Avatar billede terry Ekspert
30. november 2004 - 18:43 #22
silly me! I was sure it worked

Dim i As Integer, j As Integer, Dato As Date
Dim sSQL As String

For i = 0 To Me.Aar.ListCount - 1

If Me.Aar.Selected(i) Then

DoCmd.SetWarnings False
For j = 0 To Me.Maaneder.ListCount - 1
  If Me.Maaneder.Selected(j) Then

    Dato = DateSerial(Me.Aar.Column(0, i), Me.Maaneder.Column(2, j), 1)
    sSQL = "INSERT into Vedligehold (Dato, prioritet, beskrivelse, type, afdeling, enhed, komponent, rekvirent) VALUES('" & Dato & "', '" & Me.Prioritet & "', '" & Me.Beskrivelse & "', '" & Me.Type & "', '" & Me.Afdeling & "', '" & Me.Enhed & "', '" & Me.Komponent & "', '" & Me.Rekvirent & "' )"
    DoCmd.RunSQL sSQL
   
  End If

Next j
DoCmd.SetWarnings True


End If
Avatar billede Slettet bruger
01. december 2004 - 09:41 #23
Yes... Thanks a million..  !~)
Throw a reply
Avatar billede terry Ekspert
01. december 2004 - 12:20 #24
: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