Datumsfunktion läuft nicht

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von weedl.

    Datumsfunktion läuft nicht

    Hi Leute,

    ich habe eine kleine Datumsfunktion die mir die anzahl der Tage ausgeben soll, die von jetzt bis zum Ende des aktuellen Monats bleiden.

    VB.NET-Quellcode

    1. Function GetLastDayOfMonth(ByVal d As DateTime) As DateTime
    2. Dim Datum1 As DateTime = DateAdd(DateInterval.Month, 1, d)
    3. Return DateAdd(DateInterval.Day, -d.Day, Datum1)
    4. Datum2 = DateTime.Now.Date
    5. lbltage.Text = DateDiff("d", Datum1, Datum2)
    6. End Function


    nun bekomme ich leider einen Fehler bei in der letzten Zeile: DateDiff("d", Datum1, Datum2)

    'Für den parameter "d" in public Function wurde kein Argument angegeben'


    Weiß da jemand Rat??

    Danke schonmal vorab!

    Edit by der_Kurt:
    Die Farbe Rot ist Moderatorenhinweisen vorbehalten. Bitte nicht verwenden

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Ich habe jetzt das "d" in DateInterval.Day ersetzt. Also so:

    VB.NET-Quellcode

    1. Function GetLastDayOfMonth(ByVal d As DateTime) As DateTime
    2. Dim Datum1 As DateTime = DateAdd(DateInterval.Month, 1, d)
    3. Return DateAdd(DateInterval.Day, -d.Day, Datum1)
    4. Datum2 = DateTime.Now.Date
    5. lbltage.Text = DateDiff(DateInterval.Day, Datum1, Datum2)
    6. End Function


    Ich glaube ich habe deinen Hinweis nicht richtig verstanden. Denn der Fehler kommt immernoch ?(
    Schreib doch zunächst mal Option strict On in Deinen Programm!
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ RodFromGermany

    ich habe jetzt in meinem Projekt Option Strict On geschalten. Jetzt sieht mein Code folgendermaßen aus:

    VB.NET-Quellcode

    1. Function GetLastDayOfMonth(ByVal d As DateTime) As DateTime
    2. Dim Datum1 As DateTime = DateAdd(DateInterval.Month, 1, d)
    3. Return DateAdd(DateInterval.Day, -d.Day, Datum1)
    4. Datum2 = DateTime.Now.Date
    5. lbltage.Text = CStr(DateDiff(DateInterval.Day, Datum1, Datum2))
    6. End Function


    nur leider ist der Fehler immernoch da :(

    @ Dodo

    welche zeilen meinst Du?
    Ich frage mich auch, warum du einen Parameter an die Funktion übergeben willst, denn aus meiner Sicht ist ein Parameter gar nicht notwendig.
    Wenn die Funktion aufgerufen wird, stehen doch alle Daten zur Verfügung.

    Ich würde es so machen:

    VB.NET-Quellcode

    1. 'jetziges Datum feststellen
    2. Dim Datum2 As DateTime = DateTime.Now.Date
    3. 'Datum um einen Monat erhöhen
    4. Dim Datum1 As DateTime = DateAdd(DateInterval.Month, 1, Datum2)
    5. 'feststellen, welches der neue Monat ist
    6. Dim neuer_monat As Integer = CInt(DatePart("M", Datum1))
    7. 'Var für die anzahl der Tage dimensionieren
    8. Dim anzahl_tage As Integer = 0
    9. 'Tage hochzählen, bis ein neuer Monat erreicht ist
    10. Do Until CInt(DatePart("M", Datum2)) = neuer_monat
    11. anzahl_tage = anzahl_tage + 1
    12. Datum2 = DateAdd(DateInterval.Day, 1, Datum2)
    13. Loop
    14. Return anzahl_tage



    das müßte doch eigentlich klappen.

    Da mußt du nur noch mal kontrollieren, wie sich das Programm an den Rändern verhält.

    lieben Gruß

    Gabi

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „weiss_gabi“ ()