access2000 messzeiträume datum

hallo,

gegeben ist folgendes konstrukt:

tabelle1 (‚mastertabelle‘) enthält u.a. folgende felder mit 2 beispieldatensätzen:

start … ende … number of periods

01.01.2005 … 31.12.2005 … 12
28.03.2004 … 10.10.2005 … 53

tabelle2 (‚datailtabelle‘) enthält dann u.a. das feld period, welches dann den einzelnen messperioden entspricht (in weiteren feldern befinden sich dann die eigentlichen messwerte):
period

1 … oder eben von 1 bis 53 für den zweiten fall
2
.
.
11
12

… in datensatz 1 der tabelle1 ist der idealfall abgebildet, der besagt, dass die werte in monatlichem rhythmus erhoben werden, nämlich zwölf gleichlange messperioden in einem kalenderjahr -> monate

… nun kommt es in meiner ‚datenansammlung‘ aber häufig vor, dass sowohl start- als auch enddatum ‚krumm’ sind, oder sich ein gesamtmesszeitraum eben in ‚krumme’ anzahlen von messperioden unterteilt (zweiter beispielsdatensatz) … ich muss aber im laufe der auswertungen zumindest mit monatswerten rechnen können … dazu brauche ich die entsprechende zuordnung …

… zunächst habe ich also errechnen lassen, wieviel tage der jeweilige gesamtmesszeitraum umfasst, dann durch die anzahl der messperioden geteilt, um deren länge zu erhalten - soweit so gut … ich denke auch, dass man nicht umhin kommt, diese messperioden auf tage umzurechnen … aber die zuordnung ? ?

… meine frage nun also:
wie ist es in access2000 möglich, ausgehend von einem gegebenen gesamtmesszeitraum (start- und enddatum) und irgendeiner anzahl gleichlanger messperioden, in welche dieser gesamtmesszeitraum unterteilt ist, jeden tag innerhalb dieses gesamtmesszeitraums einem bestimmten datum (oder zumindest monat) zuzuordnen?

… dieses konstrukt habe ich mir nicht ausgedacht, muss aber jetzt irgendwie damit leben … vielleicht könnt ihr mir ja dabei behilflich sein? … schonmal herzlichsten dank! … gruß, dynja …

  • oje oje, hoffentlich hab ich mich einigermaßen verständlich ausgedrückt -

Hallo.

wie ist es in access2000 möglich, ausgehend von einem
gegebenen gesamtmesszeitraum (start- und enddatum) und
irgendeiner anzahl gleichlanger messperioden, in welche dieser
gesamtmesszeitraum unterteilt ist, jeden tag innerhalb dieses
gesamtmesszeitraums einem bestimmten datum (oder zumindest
monat) zuzuordnen?

  • oje oje, hoffentlich hab ich mich einigermaßen verständlich
    ausgedrückt -

Urg. Hoffentlich habe ich es verstanden :wink:

Du hast ein Startdatum und ein Enddatum sowie die Anzahl der Perioden. Der Zeitraum zwischen den Datümmern soll gleichmäßig verteilt werden - soweit mein Verständnis.

Zunächst strick Dir eine Ausgabetabelle, die zumindest den Ausgangsschlüssel sowie ein Datumsfeld enthält.

Dann schreib eine

Public Sub TeilPeriode()
Dim lpm\_dat\_PerDatum As Date
Dim lpm\_int\_AnzPer As Integer
Dim lpm\_int\_PerDiff As Integer
Dim lpm\_rst\_EinTable As DAO.Recordset
Dim lpm\_rst\_AusTable As DAO.Recordset
CurrentDB.Execute "DELETE \* FROM DeineAusgabetabelle"
Set lpm\_rst\_EinTable=CurrentDB.OpenRecordset("DeineAusgangstabelle",dbOpenDynaset)
Set lpm\_rst\_AusTable=Currentdb.OpenRecordset("DeineAusgabetabelle",dbOpenDynaset)
If (lpm\_rst\_EinTable.EOF) Then
 lpm\_rst\_EinTable.Close
 lpm\_rst\_AusTable.Close
 Set lpm\_rst\_EinTable=Nothing
 Set lpm\_rst\_AusTable=Nothing
 MsgBox "Keine Daten in der Ausgangstabelle!",vbCritical
 Exit Sub
End If
lpm\_rst\_EinTable.MoveFirst
With lpm\_rst\_EinTable
 While (Not .EOF)
 lpm\_int\_AnzPer=!DeinFeldAnzahlPerioden
 lpm\_int\_PerDiff=DateDiff("d",!DeinFeldStartdatum,!DeinFeldEnddatum)/lpm\_int\_AnzPer
 For lpm\_int\_LoopCnt=1 To lpm\_int\_AnzPer
 With lpm\_rst\_AusTable 
 .AddNew
 !DeinFeldAusgangsschlüssel=lpm\_rst\_EinTable!Schlüssel
 !DeinFeldAusgabedatum=(lpm\_int\_LoopCnt-1)\*lpm\_int\_PerDiff+lpm\_rst\_EinTable!Startdatum
 .Update
 End With
 Next
 .MoveNext
 Wend
 .Close
 lpm\_rst\_AusTable.Close
End With
Set lpm\_rst\_EinTable=Nothing
Set lpm\_rst\_AusTable=Nothing
MsgBox "Alles paletti konfetti",VbInformation
End Sub

Nach diesem codegewordenen Kindergeburtstag sollten Deine Messdaten eigentlich in der Ausgabetabelle stehen, und zwar n Sätze für n Messpunkte.

Und was zum *#%& passiert da? Nun, er liest jeden Satz aus der Ausgangstabelle, teilt dann den Zeitraum von Start bis Ende in die gewünschte Anzahl auf und ermittelt das dazugehörige Datum so, dass die ausgegebenen n Sätze jeweils gleichmäßig auf den geforderten Zeitraum verteilt werden - zumindest sollte er das. Getestet habe ich das jetzt nicht …

HTH

Gruß Eillicht zu Vensre

hallo

allerherzlichsten dank (*) für deine mühe … sobald es möglich ist, probiere ich das mal aus … da ich vba-mäßig nicht sattelfest bin, kann es sein, dass ich mich dann nochmal bei dir melde - wäre das in ordnung? … by the way: kannst du mir einen kurs, literatur etc. empfehlen zum effektiven erlernen von vba-anfängen? … gruß, dynja …