Español
Foro

Datum en gültig prüfen

 
- Página 1 -



Walter
¡Hola,

Hintergrund: Yo parse una Texto después de Datumswerten (en DB-Formato) y errechne de zwei Datumswerten el Tages-Differenz .

Freeprofan 095, Prfrun32.exe
Conjunto("ErrorLevel", 0)
declarar Datum1$,Datum2$,Diff%
'Eingelesene Werte zB
Datum1$=20161001
Datum2$=20161030
'+----------------------------------------------

Proc DeltaTage_DB_Format

    '+----------------------------------------------
    'Berechnet Anzahl de Tagen zwischen 2 Datumswerten
    'Parámetro: Anfang, Ende en Datenbankformat
    'Rückgabe Differenz Tage Integer
    Parámetros Von$,Bis$
    Volver dt("DaysBetween", dt("setdate",DToC$(Von$)), dt("setdate",DToC$(Bis$)))

ENDPROC'DeltaTage_DB_Format

' Hauptprogramm
Diff% = DeltaTage_DB_Format(Datum1$,Datum2$)
messagebox(str$(diff%),"Differenz-Tage",0)

En Eingabe gültiger Datumswerte errechnet el Programa el Differenz.
En fehlerhaftem Datumswert bricht "setdate" el Programa sin Möglichkeit uno Reacción de.
Gibt lo el Möglichkeit, una Datum en gültig a überprüfen, bevor uno lo verwendet?

LG

Walter
 
03.11.2016  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


Jörg
Sellmeyer
Yo sería lo así hacer:
Conjunto("ErrorLevel", 0)
declarar Datum1$,Datum2$,Diff%
'Eingelesene Werte zB
Datum1$=20161001
Datum2$=20161030
'+----------------------------------------------

Proc DeltaTage_DB_Format

    '+----------------------------------------------
    'Berechnet Anzahl de Tagen zwischen 2 Datumswerten
    'Parámetro: Anfang, Ende en Datenbankformat
    'Rückgabe Differenz Tage Integer
    Conjunto("ErrorLevel", -1)
    Parámetros Von$,Bis$
    Var Valor$ = dt("DaysBetween", dt("setdate",DToC$(Von$)), dt("setdate",DToC$(Bis$)))
    'imprimir %error

    If %Error > 0

        'imprimir "Fehler"
        Valor$ = "Fehler"

    EndIf

    Conjunto("ErrorLevel", 0)
    Volver Valor$

ENDPROC'DeltaTage_DB_Format

' Hauptprogramm
Var Ergebnis$ = DeltaTage_DB_Format(Datum1$,Datum2$)

If Ergebnis$ = "Fehler"

    '...

Más

    diff% = Val(Ergebnis$)
    'Hier entonces el weitere Behandlung

EndIf

Waitinput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03.11.2016  
 




Walter
Oho - trickreich!
Herzlichen Dank!
Walter
 
03.11.2016  
 




Michael
W.
algunos Routinen de MwDate
Proc MakeFullYear

    ' Füllt el (eventuell) vergessene Jahrhundert en.
    ' Y = MakeFullYear( Y )
    Parámetros Y%
    Declarar ThisCentury%, ThisCenturyRange%
    ThisCentury% = 20
    ThisCenturyRange% = 29'2000 - 2029, sonst 1930 - 1999

    If Y% < 100

        Casenote Between(ThisCenturyRange%,0,99) : ThisCenturyRange% = 29
        Casenote Between(ThisCentury%,16,39) : ThisCentury% = Int(dt("GetYear",!now) / 100)

        If Y% <= ThisCenturyRange%

            ' aktuelles Jahr
            Y% = Y% + (ThisCentury% * 100)

        Más

            ' Vorjahr
            Y% = Y% + ((ThisCentury% - 1) * 100)

        EndIf

    EndIf

    Volver Y%

ENDPROC

Proc LastDayInMonth

    ' Liefert el letzten Tag des Monats.
    ' Ultimo = LastDayInMonth( Mo, Y )
    ' -1 = Fehler
    Parámetros Mo%, Y%
    Declarar Leap%, Ultimo%, LDiM%[12]
    LDiM%[0]=0:LDiM%[1]=31:LDiM%[2]=28:LDiM%[3]=31:LDiM%[4]=30:LDiM%[5]=31:LDiM%[6]=30
    LDiM%[7]=31:LDiM%[8]=31:LDiM%[9]=30:LDiM%[10]=31:LDiM%[11]=30:LDiM%[12]=31
    Ultimo% = -1
    Case Y% < 100 : Y% = MakeFullYear(Y%)
    Leap% = if((((Y% mod 4) = 0) and ((Y% mod 100) <> 0)) or ((Y% mod 400) = 0), 1, 0)' isLeapYear(Y)
    Case Between(Mo%,1,12) : Ultimo% = LDiM%[Mo%] + if( (Mo% = 2) and (Leap% = 1), 1, 0)
    Volver Ultimo%

ENDPROC

Proc isValidDate

    ' Prüft Tag,Monat,Jahr en Gültigkeit.
    ' ok = isValidDate(D,Mo,Y)
    ' 0 = invalid (falso)
    ' 1 = valid (true)
    Parámetros D%,Mo%,Y%
    Declarar ok%
    ok% = 0
    Case Between(Y%,1600,3999, Mo%,1,12, D%,1,(LastDayInMonth(Mo%,Y%))) : Inc ok%
    Volver ok%

ENDPROC

Proc GetDayDB

    ' Zieht el Tag de una DB-Datum.
    ' Day = GetDayDB( DB )
    Parámetros DB%
    Volver DB% mod 100

ENDPROC

Proc GetMonthDB

    ' Zieht el Monat de una DB-Datum.
    ' Month = GetMonthDB( DB )
    Parámetros DB%
    Volver Int((DB% mod 10000) / 100

ENDPROC

Proc GetYearDB

    ' Zieht el Jahr de una DB-Datum.
    ' Year = GetYearDB( DB )
    Parámetros DB%
    Volver Int(DB% / 10000)

ENDPROC

Proc SetDB

    ' Erstellt de Tag,Monat,Jahr una DB-Datum con Gültigkeitsprüfung.
    ' DB = SetDB(D,Mo,Y)
    ' -1 = Fehler
    Parámetros D%,Mo%,Y%
    Declarar DB%
    DB% = -1
    Case Y% < 100 : Y% = MakeFullYear(Y%)
    Case isValidDate(D%,Mo%,Y%) : DB% = Y% * 10000 + Mo% * 100 + D%
    Volver DB%

ENDPROC

 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
03.11.2016  
 




Walter
Sí, el son muy nützliche Routinen!
Posesiones mich sonst wegen el no bastante einfachen Verwendung el neuen Datumsfunktionen zusätzlich con Características de prfdat32.dll bastante bien beholfen.
Gracias!
Walter
 
05.11.2016  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

8.814 Views

Untitledvor 0 min.
H.Brill10.10.2022
Langer30.01.2021
PETER195601.11.2020
p.specht23.02.2020
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie