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! !~)
Annonceindlæg tema
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)
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?
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
Slettet bruger
25. november 2004 - 14:22
#4
Ok I will tjeck it out!
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...
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)
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?
Slettet bruger
25. november 2004 - 15:38
#8
yes
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
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
26. november 2004 - 12:07
#11
hows it going spg?
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..?
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
Slettet bruger
26. november 2004 - 15:08
#14
It seems ok
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
Slettet bruger
29. november 2004 - 08:25
#16
NO.... it still saves all the records with the last date??? !~(
29. november 2004 - 09:54
#17
can yousend me your dB and I will take a look? eksperten@NOSPAMsanthell.dk remove NOSPAM
Slettet bruger
29. november 2004 - 11:24
#18
Its off to eksperten@santhell.dk, thanks !~)
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
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. !~)
30. november 2004 - 18:10
#21
what doesnt work?
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
Slettet bruger
01. december 2004 - 09:41
#23
Yes... Thanks a million.. !~) Throw a reply
01. december 2004 - 12:20
#24
:o)
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser