Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: magic_halli am 25.11.08 - 14:52:54

Titel: LS2J und Type Mismatch
Beitrag von: magic_halli am 25.11.08 - 14:52:54
Hallo,

ich arbeite mich gerade in LS2J ein. Ich möchte verstehen und später nutzen, wie die Parameterübergabe aus LotusScript-Agents an eine Java-Anwendung vonstatten geht.
Soweit ist mir das auch erstmal relativ klar.
Jetzt habe ich eine total simple LS2J-Anwendung geschrieben:
1. ein LotusScript-Agent ließt aus einem selectierten Maildokument den Betreff aus
2. im Agent erfolgt die Parameterübergabe des Betreff´s an die Java-Scriptbibliothek
3. die Scripbibliothek stellt den Betreff lediglich in einem JOptionPane.showMessageDialog wieder dar.

Nur leider habe ich eine "Type Mismatch"-Exception, wenn ich im LotusScript-Agent den Mailbetreff in einer Stringvariable speichern will, um diese dann an Java zu übergeben!

LotusScrip-Agent:
Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim doc As NotesDocument
	
	Set db = session.CurrentDatabase
	Set dc = db.UnprocessedDocuments
	Set doc = dc.GetFirstDocument
	
	
	Dim jSession As JavaSession
	Dim jError As JavaError
	Dim jClass As JavaClass
	Dim jObject As JavaObject
	Dim sBetreff As String
	
' hier kommt der "Type Mismatch"
	sBetreff = doc.GetItemValue( "Subject" )
	
	Set jSession = New JavaSession
	Set jClass = jSession.GetClass("DocumentLS2J")
	Set jObject = jClass.CreateObject()
	'Java-Methoden aufrufen
	jObject.setBetreff(sBetreff)
	jObject.showBetreff(jObject.getBetreff())
	
End Sub

Ich habe auch schon 'sBetreff = Cstr(doc.GetItemValue( "Subject" ))' versucht - hat auch nix gebracht (gleiche Meldung).
Was hab ich falsch gemacht?

Danke und Gruß
Titel: Re: LS2J und Type Mismatch
Beitrag von: DAU-in am 25.11.08 - 14:54:11
sBetreff = doc.GetItemValue( "Subject" )(0)

Edit: getItemValue liefert dir ein Array, das kannst du nicht einer Stringvariablen zuweisen, mit (0) greifst du explizit auf das erste Element zu

Titel: Re: LS2J und Type Mismatch
Beitrag von: magic_halli am 25.11.08 - 14:58:15
Ha, jawohl... klappt. Danke
Ich schau jetzt auch gleich nochmal in der Hilfe nach... Aber kannst Du mir die (0) erklären? ...heißt das an der Stelle 0?
Titel: Re: LS2J und Type Mismatch
Beitrag von: flaite am 25.11.08 - 14:59:49
doc.getItemValue("feldName") gibt einen Array zurück.
(0) bedeutet das erste Element dieses Arrays.
Titel: Re: LS2J und Type Mismatch
Beitrag von: koehlerbv am 25.11.08 - 15:00:37
Und genau das hat doch DAU-in schon geschrieben ...
Titel: Re: LS2J und Type Mismatch
Beitrag von: DAU-in am 25.11.08 - 15:01:47
(0) bedeutet das Array-element an 0.ter Stelle

wenn du die den Zählbeginn nicht explizit umstellst, ist der 0. Wert der erste (und bei nicht-Mehrfachwerten der einzige)

aber auch wenn nur ein Wert drinsteht, ist es halt ein Unterschied, ob du das Array oder das Element ansprichst
Titel: Re: LS2J und Type Mismatch
Beitrag von: magic_halli am 25.11.08 - 15:03:53
Ok, alles klar... hab schon auf ein Array spekuliert - wollte nur auf Nummer sicher gehen.  ;)

Zitat
Und genau das hat doch DAU-in schon geschrieben ...
Der Edit hat sich anscheinend mit meiner Schreiberei überschnitten...

Danke und Gruß