Hallo,
ich habe einen Array (array_t) vom Typ String mit vielen Werten. Da es sich hierbei um Zahlen handelt würde ich diesen gerne als Zahl umwandeln.
Set collection = db.Search(searchFormula$, dateTime,0)
Dim coldoc As NotesDocument
Dim abversioncol As Variant
Dim zähler As Integer
Dim zähler1 As Integer
Dim arraycol As Variant'String
zähler = collection.count
Set coldoc = collection.GetFirstDocument
While zähler <> 0
abversioncol = coldoc.GetItemValue( "ABVersion" )
arraycol = abversioncol(0) & ";"& arraycol
zähler= zähler-1
Set coldoc = collection.GetNextDocument(coldoc)
Wend
array_t = Evaluate( |@Explode("| + arraycol + |";";")| )
Und kann mir vielleicht jemand noch verraten wie ich an den höchsten Wert des Arrays heran komme?
Habe es ansatzweise so vesucht, aber ohne Erfolg :-(
array_t = Evaluate( |@Explode("| + arraycol + |";";")| )
num_t = Val(array_t(o))
Forall u In array_t
'Dim eval As String
'Dim pruefung
'eval = |@max(array_t(u))|
'pruefung = Evaluate(evasl, coldoc)
num_t = Cint(array_t(u))
End Forall
Dankeschön.
Gruß Sabine
Hallo Sabine,
warum machst Du nicht beide Dinge in einem Rutsch - wenn Du sowieso schon dabei bist? Hier ein Vorschlag:
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim aDouble () As Double
Dim vStrings As Variant
Dim iLoop As Integer
Dim dblMax As Double
Set doc = ws.CurrentDocument.Document
VStrings = doc.AbVersion
Redim aDouble (Ubound (vStrings))
For iLoop = 0 To Ubound (vStrings)
aDouble (iLoop)= Cdbl (vStrings (iLoop))
If iLoop = 0 Then
dblMax = aDouble (iLoop)
Else
If aDouble (iLoop) > dblMax Then
dblMax = aDouble (iLoop)
End If
End If
Next
Msgbox Cstr (dblMax)
ACHTUNG: Hier fehlt jegliches ErrorHandling. Und genau das ist die Stärke von "pure LS" in dieser Situation - Du kannst reagieren, wenn in Deiner Stringliste ein Wert enthalten ist, der nicht in eine Zahl konvertierbar ist.
HTH,
Bernhard
Herzlichen Dank :D,
das hat mir sehr viel weiter geholfen *freu ganz doll*. Darauf wäre ich nie gekommen, außerdem fehlt mir wohl noch das richtige Verständnis für solche LS Funktionen.
Habe es nun so gelöst:
'Versionsnummernüberprüfung auf die Versionsnummer, die neue Versionsnummer_
'darf max. 1 höher sein, als sie bereits in anderen Beanstandungen existiert
Set collection = db.Search(searchFormula$, dateTime,0)
Dim coldoc As NotesDocument
Dim abversioncol As Variant
Dim zähler As Integer
Dim arraycol As Variant
Dim aDouble () As Double
Dim iLoop As Integer
Dim dblMax As Double
zähler = collection.count
Set coldoc = collection.GetFirstDocument
While zähler <> 0
abversioncol = coldoc.GetItemValue( "ABVersion" )
arraycol = abversioncol(0) & ";"& arraycol
zähler= zähler-1
Set coldoc = collection.GetNextDocument(coldoc)
Wend
array_t = Evaluate( |@Explode("| + arraycol + |";";")| )
Redim aDouble (Ubound (array_t))
For iLoop = 0 To Ubound (array_t)
aDouble (iLoop)= Cdbl (array_t (iLoop))
If iLoop = 0 Then
dblMax = aDouble (iLoop)
Else
If aDouble (iLoop) > dblMax Then
dblMax = aDouble (iLoop)
End If
End If
Next
Msgbox Cstr (dblMax)
Eine Fehlerprüfung, ob in dem Feld wirklich eine Zahl steht habe ich schon drinnen, denn dann bricht mein Script vorher schon ab. Aber danke Dir für den Hinweis. Hier ist nochmal mein Script:
'Das Feld ABVersion darf nur Zahlen enthalten!
If Isnumeric (abversion) Then
Else
Messagebox "Die Änderungsbriefversion darf nur Zahlen enthalten!"
Call source.GotoField( "ABVersion" )
Call source.FieldSetText ("SaveOptions","0")
Continue = False
Exit Sub
End If
zur Fehlerüberprüfung, ob es sich wirklich um Zahlen in dem Feld handelt.
Dankeschön, nochmal und noch einen schönen Tag :-)
Gruß Sabine
Hi
kleiner verbesserungsvorschlag noch
'Das Feld ABVersion darf nur Zahlen enthalten!
If NOT Isnumeric (abversion) Then
Messagebox "Die Änderungsbriefversion darf nur Zahlen enthalten!"
Call source.GotoField( "ABVersion" )
Call source.FieldSetText ("SaveOptions","0")
Continue = False
Exit Sub
End If
und
array_t = Evaluate( |@Explode("| + arraycol + |";";")| )
=>
array_t = split(arraycol,";")
Hallo Umi,
das ist wirklich nett von Dir :),
der erste Hinweis mit dem Not war kein Problem...
'Das Feld ABVersion darf nur Zahlen enthalten!
If NOT Isnumeric (abversion) Then
Messagebox "Die Änderungsbriefversion darf nur Zahlen enthalten!"
Call source.GotoField( "ABVersion" )
Call source.FieldSetText ("SaveOptions","0")
Continue = False
Exit Sub
End If
aber der zweite mit dem Split macht Probleme, denn dann hat er irgendwie einen leeren Wert zuviel in dem Feld array_t.
While zähler <> 0
abversioncol = coldoc.GetItemValue( "ABVersion" )
arraycol = abversioncol(0) & ";"& arraycol
zähler= zähler-1
Set coldoc = collection.GetNextDocument(coldoc)
Wend
array_t = Evaluate( |@Explode("| + arraycol + |";";")| )
'array_t = Split(arraycol,";")
Und bringt mir somit die Fehlermeldung Type mismatch!
LG Biene :)