Autor Thema: String-Array in Zahl wandeln und den höchsten Wert auslesen  (Gelesen 1760 mal)

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
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.

Code
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 :-(

Code
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
« Letzte Änderung: 08.02.06 - 07:49:36 von Sabine »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: String-Array in Zahl wandeln und den höchsten Wert auslesen
« Antwort #1 am: 07.02.06 - 17:58:01 »
Hallo Sabine,

warum machst Du nicht beide Dinge in einem Rutsch - wenn Du sowieso schon dabei bist? Hier ein Vorschlag:

Code
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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: String-Array in Zahl wandeln und den höchsten Wert auslesen
« Antwort #2 am: 08.02.06 - 07:49:08 »
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:

Code
'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:

Code
'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

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: String-Array in Zahl wandeln und den höchsten Wert auslesen
« Antwort #3 am: 08.02.06 - 08:42:44 »
Hi
kleiner verbesserungsvorschlag noch
Code
'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

Code
array_t = Evaluate( |@Explode("| + arraycol + |";";")| )
=>
array_t = split(arraycol,";")
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: String-Array in Zahl wandeln und den höchsten Wert auslesen
« Antwort #4 am: 08.02.06 - 09:30:55 »
Hallo Umi,

das ist wirklich nett von Dir  :),

der erste Hinweis mit dem Not war kein Problem...

Code
'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.
Code
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  :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz