Zeichenkette überprüfen

Hallo zusammen,

ich möchte innerhalb von Sax Basic eine Zeichenkette auf ein bestimmtes Schema überprüfen. Das Schema sieht so aus:

„[4stellige Jahreszahl].[2stellige Monatszahl].[2stellige Tageszahl]“,

also z.B.

2005.05.02
2019.11.27

Kann mir dabei jemand behilflich sein? Ich bin erst aufgrund von „ARIS Reports“ in das Thema VBS eingestiegen, und stehe beim Pattern Matching ehrlich gesagt „wie der Ochs vorm neuen Scheunentor“.

Danke + Gruß,
Thomas

ich möchte innerhalb von Sax Basic eine Zeichenkette auf ein
bestimmtes Schema überprüfen. Das Schema sieht so aus:
„[4stellige Jahreszahl].[2stellige Monatszahl].[2stellige
Tageszahl]“,
2005.05.02
2019.11.27
Kann mir dabei jemand behilflich sein? Ich bin erst aufgrund
von „ARIS Reports“ in das Thema VBS eingestiegen, und stehe
beim Pattern Matching ehrlich gesagt „wie der Ochs vorm neuen
Scheunentor“.

Hallo Thomas,
ich kenne weder Sax basic, noch VBS und weiss nur Match bedeutet irgendwie Übereinstimmng. Dieser Report sagt mir nix.
Ich aknn ein bißchen Excel-Vba und wenn ich dich Rrecht verstehe:
sub tt()
for n= 1 to 10
if mid(cells(n,1),5,1)="." and …
dann die Überprfung ob die Daten gültig sind?
Jetzt habe ich keine Ahnung ob dein VBS diesen Cde ausführen kann und ob ich richtig liege mit dem was ich glaube das du willst.
next n
end sub
Gruß
Reinhard

Hallo, Thomas!

2005.05.02
2019.11.27

Hinsichtlich Sax-Basic schließe ich mich an: Ist das was zu essen? Beim MS-VB gäbe es die Variante, mit LIKE zu überprüfen; das würde allerdings schon eine Gültigkeit von 2005.18.18 ergeben. Die andere Variante, wenn Du wirklich nur Datumswerte haben willst: Wandel den String in ein Date um. (Unter VB z. B. mit CDate; es gibt auch IsDate als Funktion.) Wenn das keinen Fehler gibt, ist die Zeichenfolge korrekt; wenn’s einen Fehler gibt, eben nicht.

Schaue also mal unter Typkonvertierungsroutinen in der Hilfe nach.

Gruß, Manfred

Hallo Manfred,

2005.05.02
2019.11.27

danke für Deine Hilfe, ich habs mit einer Mischung aus beiden Antworten hinbekommen:

-------- snip ------------
Function checkForValidVersionName(version As String, generation As String) As Boolean
Dim strlength As Boolean
Dim strformat As Boolean
Dim validDate As Boolean
Dim msg As String

strlength = True
strformat = True
validDate = True

If Not Len(version) = 10 Then
strlength = False
End If

If Not IsNumeric(Mid(version,1,4)) = True Then
strformat = False
End If

If Not Mid(version,5,1) = „.“ Then
strformat = False
End If

If Not IsNumeric(Mid(version,6,2)) = True Then
strformat = False
End If

If Not Mid(version,8,1) = „.“ Then
strformat = False
End If

If Not IsNumeric(Mid(version,9,2)) = True Then
strformat = False
End If

If Not IsDate(version) = True Then
validDate = False
End If

If strlength = False Or strformat = False Or validDate = False Then
msg = „Ungültiges Datum! Versionsname muss Schema entsprechen (‚JJJJ.MM.TT‘)!“
If generation = „old“ Then
tfxlogger("Fehler bei Quell-Versionsname: " & msg)
MsgBox("Fehler bei Quell-Versionsname: " & msg)
ElseIf generation = „new“ Then
tfxlogger("Fehler bei neuem Versionsnamen: " & msg)
MsgBox("Fehler bei neuem Versionsnamen: " & msg)
Else
tfxlogger("Fehler bei Versionsname: " & msg)
MsgBox("Fehler bei Versionsname: " & msg)
End If
checkForValidVersionName = False
Else
checkForValidVersionName = True
End If

End Function
-------- snip ------------

Hinsichtlich Sax-Basic schließe ich mich an: Ist das was zu
essen?

Sax Basic ist „quasi“ MS-VB, siehe: http://www.sax.net/Basic/Language.aspx

Danke + Gruß,
Thomas

Hi Thomas,
ich habs mal ein bisschen gekürzt aber nicht getestet da mir unklar ist was der Code machen soll :smile:
Probiers aml aus obs funktioniert:

Function tt()
Dim strlength As Boolean, strformat As Boolean, validDate As Boolean, msg As String
tt = Not tt
If Len(version) = 10 Or Mid(version, 5, 1) = "." Or Mid(version, 8, 1) = "." Then strlength = True
If IsNumeric(Mid(version, 1, 4)) = True Or IsNumeric(Mid(version, 6, 2)) = True Or IsNumeric(Mid(version, 9, 2)) = True Then strformat = True
If IsDate(version) = True Then validDate = True
msg = "Ungültiges Datum! Versionsname muss Schema entsprechen ('JJJJ.MM.TT')!"
If strlength = False Or strformat = False Or validDate = False Then
 botschaft = Application.WorksheetFunction.Choose((generation = "old") \* -1 + 1, "Fehler bei neuem Versionsnamen: ", "Fehler bei Quell-Versionsname: ")
 tfxlogger (botschaft & msg)
 MsgBox (botschaft & msg)
 tt = False
End If
End Function

Gruß
Reinhard

Function checkForValidVersionName(version As String,
generation As String) As Boolean
Dim strlength As Boolean
Dim strformat As Boolean
Dim validDate As Boolean
Dim msg As String

strlength = True
strformat = True
validDate = True

If Not Len(version) = 10 Then
strlength = False
End If

If Not IsNumeric(Mid(version,1,4)) = True Then
strformat = False
End If

If Not Mid(version,5,1) = „.“ Then
strformat = False
End If

If Not IsNumeric(Mid(version,6,2)) = True Then
strformat = False
End If

If Not Mid(version,8,1) = „.“ Then
strformat = False
End If

If Not IsNumeric(Mid(version,9,2)) = True Then
strformat = False
End If

If Not IsDate(version) = True Then
validDate = False
End If

If strlength = False Or strformat = False Or validDate =
False Then
msg = „Ungültiges Datum! Versionsname muss Schema
entsprechen (‚JJJJ.MM.TT‘)!“
If generation = „old“ Then
tfxlogger("Fehler bei Quell-Versionsname: " & msg)
MsgBox("Fehler bei Quell-Versionsname: " & msg)
ElseIf generation = „new“ Then
tfxlogger("Fehler bei neuem Versionsnamen: " & msg)
MsgBox("Fehler bei neuem Versionsnamen: " & msg)
Else
tfxlogger("Fehler bei Versionsname: " & msg)
MsgBox("Fehler bei Versionsname: " & msg)
End If
checkForValidVersionName = False
Else
checkForValidVersionName = True
End If

End Function
-------- snip ------------

Hinsichtlich Sax-Basic schließe ich mich an: Ist das was zu
essen?

Sax Basic ist „quasi“ MS-VB, siehe:
http://www.sax.net/Basic/Language.aspx

Danke + Gruß,
Thomas