Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: stitze am 16.02.05 - 11:04:16

Titel: Type Missmatch
Beitrag 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?
Titel: Re: Type Missmatch
Beitrag von: koehlerbv am 16.02.05 - 11:08:36
GetItemValue gibt immer ein Array zurück. Daher muss auch der Rückgabewert von rpRaum mit einem Index (hier sicherlich 0) angesprochen werden.

Bernhard
Titel: Re: Type Missmatch
Beitrag von: stitze am 16.02.05 - 11:21:12
Mh,danke erstmal, klingt logisch, funktioniert aber auch nicht :(
 Übrigens bekomme ich in der IF Bedingung und in der Anweisung den Type Missmatch Fehler
Titel: Re: Type Missmatch
Beitrag von: koehlerbv am 16.02.05 - 11:26:12
Left und Right erwarten als zweiten Parameter eine Zahl - da ist also bei Dir auch noch ein Fehler.

Bernhard
Titel: Re: Type Missmatch
Beitrag von: stitze am 16.02.05 - 11:28:19
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?
Titel: Re: Type Missmatch
Beitrag von: koehlerbv am 16.02.05 - 11:29:46
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
Titel: Re: Type Missmatch
Beitrag von: stitze am 16.02.05 - 11:32:17
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.
Titel: Re: Type Missmatch
Beitrag von: koehlerbv am 16.02.05 - 11:42:47
Dann hat also rpRaumbez nur ein Element ? Dann kannst Du Dir ja das ganze Looping sparen und gleich auf das eine Element zugreifen ...

Bernhard
Titel: Re: Type Missmatch
Beitrag von: stitze am 21.02.05 - 14:47:41
Da hätte ich mich glaub ich genauer ausdrücken sollen, es sind Mehrfachwerte zugelassen.
Titel: Re: Type Missmatch
Beitrag von: Marinero Atlántico am 21.02.05 - 15:08:41
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.
Titel: Re: Type Missmatch
Beitrag von: Glombi am 21.02.05 - 15:11:47
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