Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Probleme mit Arbeitstagen bei Datum

Begonnen von Icemann1970, Dezember 26, 2016, 12:26:31

⏪ vorheriges - nächstes ⏩

Icemann1970

Hallo zusammen,
Ich habe bereits die Formel zur anzeige der reinen Arbeitstage im Download-Bereich von Hondo benutzt, die auch einwandfrei in dieser DB funktioniert. Leider bekomme ich das nicht in meiner DB hin selbst wenn ich eine neue DB anlege und das Formular kompl. dort einsetze, langsam habe ich das Gefühl dass es an der Version Access 2016 liegt. Kann mir eine von euch behilflich sein?
Beim Ausführen der Abfrage:
Me.dtAnztage=CalcDays(Nz(Me.dtVon,0),Nz(Me.dtBis))
kommt die Meldung:
Fehler beim Kompilieren: Sub oder Funktion nicht definiert.
Gelb hinterlegt ist dann "CalcDays"
Mfg. Udo

Lachtaube

Dann schau mal in Hondos Datenbank - dort ist vermutlich ein VBA-Modul vorhanden, das diese Funktion beinhaltet. Ein Kopieren des Moduls sollte dann genügen.
Grüße von der (⌒▽⌒)

MzKlMu

Hallo,
hast Du auch in einem allgemeinen Modul die Funktion "CalcDays" angelegt ?
Du kannst nicht einfach die Funktion in einer Abfrage übernehmen, die muss es auch geben.
Gruß Klaus

Icemann1970

Genial. Super. Ich bin da jetzt schon sooooo, 1 Woche mit dran. Es Funktioniert.
Wenn Ihr mir jetzt noch mit einem anderen Problem hefen könntet.....
Ich habe eine Sehr große Datenbank (do it yourself) erstellt. Riesen groß (für meine Verhältnisse) mit 16 Tabellen,45 Formularen, 34 Abfragen,13 Berichte. Ich bin leihe, alles selber rausgesucht und keine Ahnung von Programmieren deshalb bin ich jetzt auch schon im 2 Jahr daran ABER es funktioniert alles.
Jetzt mein Problem: Ich würde gerne die Ansicht von einem Formular als PDF speichern oder Drucken. Ja, dazu sollte man eigentlich Berichte nehmen aber..... Problem ist dass ich mehrere Seiten (Seitenränder) ausgedruckt bekomme. Aber nur ein bestimmten Datensatz, was richtig ist. 
Mfg. Udo

MzKlMu

#4
Hallo,
bitte zukünftig beachten: Neue Frage > neues Thema.

Zum Drucken nimmt man Berichte, was ist jetzt Dein Problem dabei ?

PS:
Wenn der Laie sich ein Buch leiht, kann es danach sein, dass sein Wissen immer noch laienhaft ist.  ;D
Gruß Klaus

Lachtaube

Wenn Du das als PDF zu druckende Formular kopierst (Taste Strg-C) wirst Du beim Einfügen (Taste Strg-V) gefragt, unter was Du die Kopie speichern willst. Wähle hier Bericht und benenne das Ding ordentlich. In der Entwurfsansicht kannst Du dann diesen Bericht auf Deine Seitenanforderungen richtig einstellen. Würdest Du das mit dem Formular machen, wird das Bildschirmlayout gestört oder die Seite passt nicht richtig zum Papierlayout. Und dann schau Dir die OutputTo-Methode des DoCmd-Objekts in Deiner Access-Hilfe an - den Befehl gibt es wohl auch als Makro.Damit kann die PDF erstellt werden.
Grüße von der (⌒▽⌒)

Icemann1970

Sorry, macht ja auch Sinn ein neues Thema. Werde ich machen.
Bleibe ich mal weiter bei meinem Problem.
In meinem Formular funktioniert die Datumsfunktion, jetzt das nächste Problem. Zur Info:(Me.dtVon = Datum(), (Text149 = Liefertermin)
Wenn ich die vba
Me.dtAnztage = CalcDays(Nz(Me.dtVon, 0), Nz(Me.Text149))
eingebe ist alles gut wenn ich in Einzelnes Formular habe, ich brauche dies aber im Endlosformular, welches über eine Abfrage " Objekt Abfrage Bühne" läuft. ( ja, Bezeichnungen sind nicht optimal). Könnt Ihr mir da auch weiterhelfen?
Mfg. Udo

MzKlMu

Hallo,
Du musst die Funktion in einer Abfrage aufrufen, nicht über VBA.
Anztage: CalcDays(Nz(Von, 0), Nz(Bis, 0))
Die Formularbezüge (Me.) müssen dann entfallen und für VON und BIS müssen die Tabellenfelder verwendet werden.
Die Nz Funktion macht hier meiner Meinung nach keinen Sinn. Du rechnest mit 0 was zu unsinnigen Ergebnissen führt. Du musst dafür sorgen, dass VON und BIS immer gefüllt ist.
Gruß Klaus

Icemann1970

Okay, soll heißen dass ich kein Ungebundenes Feld nehmen kann. Also muss ich ein Feld anlegen und da die Funktion abrufen?
Mfg. Udo

MzKlMu

Hallo,
nein, Du musst wie gesagt die Funktion in einer Abfrage aufrufen. Die Abfrage erzeugt ein berechnetes Feld (Anztage). An dieses Feld wird das Formularfeld gebunden.
Gruß Klaus

Icemann1970

Vielen Dank an ALLE, die mir bei dem Problem geholfen haben. Es Funktioniert. Irgendwie habe ich das Modul nicht gespeichert dadurch konnte ich keine Funktion erstellen.
Mfg. Udo

Icemann1970

Juhuuu, da is er wieder.
Wie bekomme ich negative Arbeitstage hin. Also wie viele Arbeitstage bin ich über den festgelegten wert?
Im Modul habe ich von " For i = 0 To iDiff    auf    For i = -10 To iDiff "geändert aber das Ergebnis zeigt mir zwar die richtige Zahl (bis 10 Tage drüber) an aber kein (-)

Public Function CalcDays(dtStart As Date, dtEnd As Date) As Integer
    Dim iDiff As Integer
    Dim i As Integer
    Dim iresult As Integer
    Dim dtTemp As Date

    iDiff = DateDiff("d", dtStart, dtEnd)
    For i = 0 To iDiff       
        dtTemp = DateAdd("d", i, dtStart)
        If Weekday(dtTemp, vbMonday) <> 6 And _
           Weekday(dtTemp, vbMonday) <> 7 Then
            iresult = iresult + 1
        End If
    Next i
    CalcDays = iresult
End Function



Mfg. Udo

Lachtaube

So gibt die Funktion auch negative Werte aus.Public Function CalcDays(dtStart As Date, dtEnd As Date) As Long
   Dim i As Long, iDiff As Long

   iDiff = dtEnd - dtStart
   For i = 0 To iDiff Step Sgn(iDiff)
      Select Case Weekday(dtStart + i)
         Case vbSunday, vbSaturday
         Case Else
            CalcDays = CalcDays + Sgn(iDiff)
      End Select
   Next
End Function
Grüße von der (⌒▽⌒)

MzKlMu

Hallo,
prüfe einfach ob iDiff <0 und multipliziere wenn ja mit -1
.
.
.

    Next i
    If iDiff < 0 Then iresult = iresult * -1
    CalcDays = iresult
End Function


Ein solches Vorhaben lässt viel eleganter und einfacher mit einer Kalendertabelle erledigen. Da können auch gleich die Feiertage (und sonstige freie Tage) mit verarbeitet werden. Der komplette Code reduziert sich auf eine Zeile.
Gruß Klaus

Icemann1970

Man, da bekomme ich es ja mit der Angst zu tun. Ihr Seid Spitze. Klaus, eine Zeile und du hast mich glücklich gemacht.
Wie geht das mit der Kalendertabelle, im Download Bereich habe ich eine gefunden MS97 kann ich nicht öffnen arbeite mit 2016.
Mfg. Udo