[VB 6.0] Fehler gesucht - Werte aus OracleDB auslesen und berechnen

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    [VB 6.0] Fehler gesucht - Werte aus OracleDB auslesen und berechnen

    Hallo Zusammen mein, ich heiße Franz versuche unser altes Zeitbuchungsprogram zu retten :)
    Ich sitze hier als NixChecker vor einem altem VB6.0 Quellcode und schaffe es nicht mir das folgende zu übersetzten bzw den eventuell enthaltenen Fehler zu entdecken.
    Das Program wurde 2002 geschrieben von einem Kollegen den es nicht mehr gibt, das Program war hardcoded bis 2015 wo durch wir anfang diesen Jahres etwas in Bedrängnis gekommen sind.
    Mit eben einer alten Version des Quellcodes konnte ich das Program wieder zum laufen bringen lediglich eine Funktion macht mir Kopfzerbrechen und ich hoffe einer von euch kann mir den Fehler aufzeigen.

    Dieser Teil soll aus der Oracle DB die bereits verbrauchten Urlaubstage auslesen (einzelnen Zeilen mit jeweils der Anzahl an gebuchten Tagen) und von den in der DB eingetragenem Kontingent z.B. 25 abziehen und somit den Resturlaub anzeigen. Der Datenbestand in der DB bez verbrauchter/gebuchter Tage stimmt (angenommen 9 Buchen zu gesamt 25 Tagen) das Saldo in der DB ist mit 26 eingetragen. Das Output nach diesem Code ist jedoch -26

    Ich wäre wirklich Dankbar wenn mir jemand den Fehler aufzeigen könnte da ich eigentlich keine VB Kenntnisse habe und nur kleinste logische Fehler beheben kann.
    Mfg Franz


    Visual Basic-Quellcode

    1. ' ORACLE_READY
    2. Public Function get_verbrauchten_urlaub(nameid As Byte, Optional datum1 As Date) As Single
    3. Dim tage As Single
    4. tag = Format(datum1, "dd") & "." & Format(datum1, "mm") & "." & Format(datum1, "yyyy") & " " & Format(datum1, "hh") & ":" & Format(datum1, "nn") & ":" & Format(datum1, "ss")
    5. Dim MONATSdaten(31) As monatsdaten_typ
    6. If tag <> "30.12.1899 00:00:00" Then
    7. DSGruppe1_oeffnen "SELECT count(awid) from schichtplan where awid=3 and USER_DATENID=" & nameid & " AND Datum<=TO_DATE('" & tag & "','DD.MM.YYYY HH24:MI:SS')"
    8. Else
    9. DSGruppe1_oeffnen "SELECT count(awid) from schichtplan where awid=3 and USER_DATENID=" & nameid
    10. End If
    11. If Not DSGruppe1.EOF Then tage = CSng(DSGruppe1(0))
    12. If tag <> "30.12.1899 00:00:00" Then
    13. DSGruppe1_oeffnen "SELECT tage FROM U_Saldo WHERE userID =" & nameid & " AND Datum<=TO_DATE('" & tag & "','DD.MM.YYYY HH24:MI:SS')"
    14. Else
    15. DSGruppe1_oeffnen "SELECT tage FROM U_Saldo WHERE userID =" & nameid
    16. End If
    17. Do While Not DSGruppe1.EOF
    18. get_verbrauchten_urlaub = get_verbrauchten_urlaub + DSGruppe1(0)
    19. DSGruppe1.MoveNext
    20. Loop
    21. get_verbrauchten_urlaub = get_verbrauchten_urlaub - tage
    22. End Function

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

    Setze doch mal bitte einen Haltepunkt in Zeile 27 des geposteten Quellcodes uns sage uns, welche Werte get_verbrauchten_urlaub und tage haben.

    Weiterhin wird nicht ganz klar, was DSGruppe1(0) sein soll. Wie ist das definiert?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum