Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Knopf am Juni 14, 2017, 16:32:34

Titel: Datzensätze in Abhängigkeit des Datums einfügen
Beitrag von: Knopf am Juni 14, 2017, 16:32:34
Hallo Experten!

Ich versuche eine Dateneingabe zu erstellen, bei der in einem Formular ein Anfangsdatum und ein Enddatum sowie einige Werte eingetragen werden. Nun möchte ich mir die Differenz der beiden Datumswerte als Anzahl Wochen ausgeben lassen.

Für jede dazwischen liegende KW möchte ich einen Datensatz erzeugen und die KW abspeichern. Aber: Es will mir nicht gelingen!! Das habe ich bisher gebastelt:


Sub DatumDifferenz()

Dim DatumStart As Date
Dim DatumEnde As Date
Dim I As Integer
Dim J As Integer
Dim rst As DAO.Recordset
Dim db As DAO.Database

DatumStart = Forms!for.Auftragsbeginn
DatumEnde = Forms!for.Auftragsende


Set db = CurrentDb
Set rst = db.OpenRecordset("tblMo")
`Hier sollte das Formular geöffnet werden, aber das musste ich nach vielen Versuchen aufgeben


For I = 0 To DateDiff("w", DatumStart, DatumEnde).Value – 1  `Das hier funktioniert überhaupt nicht
rst.AddNew

        rst.Fields(1) = Forms!forMob.AnfNrMob
    rst.Fields(2) = Forms!forMob.KGNr
    rst.Fields(3) = ?? `Hier sollte jetzt die jeweilige KW eingetragen werden, also KW von Startdatum + I
rst.Update

Debug.Print I

Next I

rst.Close
db.Close

End Sub

Ich hoffe ihr könnt mir helfen. Danke!!
Titel: Re: Datzensätze in Abhängigkeit des Datums einfügen
Beitrag von: markusxy am Juni 14, 2017, 17:28:01
Zitat von: Knopf am Juni 14, 2017, 16:32:34


For I = 0 To DateDiff("w", DatumStart, DatumEnde).Value – 1  `Das hier funktioniert überhaupt nicht

Nach welchem Prinzip programmierst du?
Trail and error?
Copy and paste?
Es gibt eine Hilfe für VBA.
Dort erfährt man alles zu einem Befehl.
Wenn man die nicht nutzen kann, vergeudet man seine Zeit.
Titel: Re: Datzensätze in Abhängigkeit des Datums einfügen
Beitrag von: Knopf am Juni 14, 2017, 17:50:24
Ja, mein access-vba-skill-level liegt bei 0 und ich bin froh, dass ich überhaupt so weit gekommen bin. Ich kenne die Hilfe sehr gut nur hilft sie in diesem Fall leider nicht. Der Befehl Datediff () funktioniert an sich. Man kann es nur nicht = I setzten ubd ich weiß nicht was ich machen muss. Ist dieses Forum nicht für solche Fragen da?
Titel: Re: Datzensätze in Abhängigkeit des Datums einfügen
Beitrag von: markusxy am Juni 14, 2017, 18:06:37
DateDiff ist eine Funktion. Du kannst nicht einfach .Value anhängen. Dafür benötigt man ein Objekt.

Bevor du programmierst überleg dir eine Logik. Da liegt nämlich das Problem.
Die Schleife muss lauten.
For i = ErsteKalenderWoche + 1 To LetzteKlaenderWoche - 1

Das geht aber nur, wenn alle Kalenderwochen innerhalb eines Jahres liegen.

Titel: Re: Datzensätze in Abhängigkeit des Datums einfügen
Beitrag von: DF6GL am Juni 14, 2017, 18:39:22
Hallo,

konkret heißt das:

Sub DatumDifferenz()

Dim DatumStart As Date
Dim DatumEnde As Date
Dim I As Long
Dim rst As DAO.Recordset
Dim db As DAO.Database
Dim KwFirst as Long
Dim KwLast as Long



DatumStart = Forms!forMob!Auftragsbeginn   
DatumEnde = Forms!forMob!Auftragsende

If Year (DatumStart) <> Year (DatumEnde) Then Exit Sub

KwFirst = Datepart("ww", DatumStart, 2, 2)  'Achtung:  Wochenberechnung nicht nach DIN!
KwLast = Datepart("ww", DatumEnde, 2, 2)

Set db = CurrentDb
Set rst = db.OpenRecordset("tblMo", dbOpenDynaset)


For I = KwFirst To KwLast
rst.AddNew

    rst.Fields(1) = Forms!forMob!AnfNrMob
    rst.Fields(2) = Forms!forMob!KGNr
    rst.Fields(3) =  I
    rst.Fields(4) =Year(DatumStart)
rst.Update

Debug.Print I

Next I

rst.Close
db.Close

End Sub
Titel: Re: Datzensätze in Abhängigkeit des Datums einfügen
Beitrag von: Knopf am Juni 16, 2017, 17:28:31
Vielen Dank!!! Hat wunderbar geklappt :))