Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: stitze am 16.02.05 - 11:04:16
-
Hallo,
ich hab heut wieder mal einen Type missmatch Fehler und kann mir wieder mal nicht erklären woran es liegt
For i = 0 To Ubound(profileDocument.GetItemValue("rpRaumbez"))
If Left( profileDocument.GetItemValue( "rpRaumbez")(i),";" ) = cdoc.GetItemValue( "rpRaum" ) Then
strTelNummer = Right(profileDocument.GetItemValue("rpRaumbez")(i),";")
End If
Next
rpRaumbez ist ein Textfeld mit Mehrfachwerten.
Hat jemand eine Lösung?
-
GetItemValue gibt immer ein Array zurück. Daher muss auch der Rückgabewert von rpRaum mit einem Index (hier sicherlich 0) angesprochen werden.
Bernhard
-
Mh,danke erstmal, klingt logisch, funktioniert aber auch nicht :(
Übrigens bekomme ich in der IF Bedingung und in der Anweisung den Type Missmatch Fehler
-
Left und Right erwarten als zweiten Parameter eine Zahl - da ist also bei Dir auch noch ein Fehler.
Bernhard
-
Achso, ja das könnte es sein, ich bin jetzt von der Formelsprach ausgegeangen, wo ich als zweites Argument einen Suchstring angeben kann, k, danke. Könntest du mir vieleicht noch sagen, wie ich die Stelle eines Zeichen in einem String herrausbekomme?
-
Mit Instr bekommst Du die Position heraus. Aber: Warum erwartest Du in den Elemnten Deines Arrays ein Semikolon ? Könnte da noch ein weiterer Denkfehler drin sein ?
Bernhard
-
Nein, es ist einfach eine Konevention die wir hier getroffen haben. Es werden in dieser Liste Räume und die dazugehörigen Telefonnummern gespeichert (mit Semikolon getrennt), da mir keine andere Methode einfiel à la relationalen Datenbanken eine Beziehung zwischen zwei Feldern herzustellen.
Und da die Länge der Raumbezeichnung variert brauchten wir halt ein Trennzeichen und das Semikolon war eins der wenigen Zeichen die in einer Raumbeschreibung definitiv nicht vorkommen.
-
Dann hat also rpRaumbez nur ein Element ? Dann kannst Du Dir ja das ganze Looping sparen und gleich auf das eine Element zugreifen ...
Bernhard
-
Da hätte ich mich glaub ich genauer ausdrücken sollen, es sind Mehrfachwerte zugelassen.
-
If Left( profileDocument.GetItemValue( "rpRaumbez")(i),";" ) = cdoc.GetItemValue( "rpRaum" )
wie bernhard schon richtig meinte, wird hier ein String (linke Seite) mit einem Array (rechte Seite) verglichen.
Du müsstest also vielleicht sowas wie:
If Left( profileDocument.GetItemValue( "rpRaumbez")(i),";" ) = cdoc.GetItemValue( "rpRaum" ) (i) ' oder (0) schreiben.
-
Und wie Bernhard bereits gesagt hatte, will Left und Right als 2. Parameter ein Integer.
Damit die Formel funktioniert musst Du anstelle von Left ein Strleft und anstelle von Right ein Strright verwenden. Dann klappt's auch mit dem ";"
Andreas