Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MadMetzger am 18.11.04 - 15:12:52

Titel: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 18.11.04 - 15:12:52
Hallo zusammen!

Ich programmiere gerade eine Datenbank mit einer Checkliste für Personalveränderungen bei uns in der IT-Abteilung.

In einem Dokument soll in ein Richtextfeld ein Dokument mit einer Art Berechtigungsprofil hereingefügt werden. Hierzu habe ich eine Aktion in der Maske hinterlegt, die mit Script arbeitet. Hier taucht jedoch mein Problem auf:

Beim Aufruf der Methode RenderToItem meldet mir Notes in dieser Zeile
Code
flag = prof_doc.rendertoitem ( prof_rt_item )
kommt vom Debugger die Meldung "Type mismatch" . Die Variable flag ist als Variant definiert, so wie es in der DesignerHelp steht.

Kann mir jemand verraten, wo das Problem liegt?

Danke schonmal vorweg!

Markus
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 18.11.04 - 15:16:50
Was sagt denn der Debugger ? Ist prot_rt_item instantiiert und zeigt dieses auf ein RichtTextItem ?

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 18.11.04 - 16:47:06
Es ist instantiiert und zeigt auch auf das richtige RT-Item...  ???

Schon 'ne Richtung, was ich gucken könnte?
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 18.11.04 - 16:55:02
Kannst Du noch ein wenig mehr Code posten ?

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 18.11.04 - 17:19:24
Ich poste hier mal den ganzen Code:

Code
Dim session					As notessession
	Dim ws						As notesuiworkspace
	Dim this_db					As notesdatabase
	Dim par_view				As notesview
	Dim prof_dc					As notesdocumentcollection
	Dim this_ui_doc			As notesuidocument
	Dim par_doc				As notesdocument
	Dim prof_doc				As notesdocument
	Dim this_doc				As notesdocument
	Dim prof_rt_item			As Variant
	Dim flag						As Variant
	
	Dim server					As String
	Dim bk_datenbank		As String
	
	'##################################################################################################
	
	Set session					= New notessession
	Set ws						= New notesuiworkspace
	Set this_db					= session.currentdatabase
	Set par_view				= this_db.getview ( "Parameter" )
	
	Set this_ui_doc			= ws.currentdocument
	Set this_doc				= this_ui_doc.document
	
	flag = False
	
	Call this_doc.save (True,True)
	
	Set prof_rt_item				= this_doc.getfirstitem ( "BerechtigungProfilRT" )
	
	If Not par_view Is Nothing Then
		Set par_doc			= par_view.getdocumentbykey("Berechtigungskonzept")
	Else
		Msgbox "Ansicht Parameter nicht gefunden!",16,"Fehler"
		Exit Sub
	End If
	
	If Not par_doc Is Nothing Then
		server					= this_db.server
		bk_datenbank			= par_doc.ParameterWertTX (0)
	Else
		Msgbox "Parameter >Berechtigungskonzept< nicht gefunden!",16,"Fehler"
		Exit Sub
	End If
	
	Set prof_dc = ws.picklistcollection ( PICKLIST_CUSTOM, False, server, bk_datenbank, "BerechtigungsprofileAktuell", "Profilauswahl", "Bitte wählen Sie ein Profil aus!")
	
	Set prof_doc 				= prof_dc.getfirstdocument
	
	If prof_rt_item.type = RICHTEXT Then
		flag						= prof_doc.rendertoitem ( prof_rt_item )
		If flag = True Then
			Call this_doc.save (True,True)
		Else		
			Msgbox "Profil konnte nicht eingefügt werden!",16,"Fehler"
		End If
	End If
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 18.11.04 - 17:26:21
Warum deklarierst du eigentlich prof_rt_item als Variant ? Das tut doch nun überhaupt nicht not ...

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 18.11.04 - 17:33:28
Habe mich nach der Designerhelp gerichtet...

Using this method to get rich text items
The compiler raises an error if you try to set the return value of GetFirstItem equal to a NotesRichTextItem object. This is because a NotesItem is not necessarily a NotesRichTextItem, and the compiler has no way of knowing whether the name$ you specify actually corresponds to a rich text item. For example:
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
'...set value of doc...   
Set rtitem = doc.GetFirstItem( "Body" ) 
'compiler complains
The solution to this problem is to declare a variant, set it equal to the return value of GetFirstItem, and then treat the variant as a NotesRichTextItem. For example:
Dim doc As NotesDocument
Dim rtitem As Variant
'...set value of doc...   
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  '...use NotesRichTextItem methods...
End If
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 18.11.04 - 17:47:21
Ich muss ehrlich zugeben, dass ich RenderToRTItem noch nie anders verwendet habe als mit neu angelegten RichTextItems. Keine Ahnung, wie sich die Methode auswirkt, wenn das Item schon vorhanden und gar belegt war.

Auch wenn das jetzt das von mir gehasste try & error ist: Probier doch mal, das
- vorhandene Item zu instantieren (pur als NotesItem),
- wenn vorhanden, ein Remove
- das RTItem als eigenes Objekt deklarieren und jetzt als New mit dem selben Namen anzulegen
- und dann RenderToRTItem.

Mit welcher Designer-Version arbeitest Du ? Stimmt da Dein Footer ?

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 18.11.04 - 17:58:42
Das macht leider keinen Unterschied... habe jetzt auch schon probiert, ob es daran liegt, dass es kein bearbeitbares RT-Feld ist. Jedoch Ergebnis war das gleiche...

Mein Footer stimmt nicht mehr, Designer ist 5.0.11...

P.S. Den sollte ich mal ändern...
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: -Michael- am 18.11.04 - 21:33:49
Hi,

ich hatte mich mit der Thematik auch schon mal tiefer auseinandergesetzt.

habe jetzt auch schon probiert, ob es daran liegt, dass es kein bearbeitbares RT-Feld ist. Jedoch Ergebnis war das gleiche...
Daran sollte es nicht liegen.

Auch die Deklaration des rtitem als Variant sollte keine Probleme machen.

Dein:
Zitat
flag = prof_doc.rendertoitem ( prof_rt_item )
sollte so eigentlich gehen. Einen Type Mismatch hätte ich da jetzt nicht erwartet.

Wirf mal zum testen das "flag =" raus und ruf mach stattdessen einen Call:
Code
call prof_doc.rendertoitem ( prof_rt_item )


Ich habe unten mal eine Routine von mir drangehängt, die 1a läuft (stammt aus meiner Yet another Document Library (http://www.notes-links.de/cpo/eigenentwicklungen/index.php)). Diese kannst Du ja bei Dir mal testen und auch vergleichen.


Michael
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 19.11.04 - 07:50:27
Wenn ich das ohne "flag =" laufen lasse, dann bekomme ich die Fehlermeldung "Illegal use of property"... Ich verstehe es ehrlich gesagt nicht...
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: mibo11 am 19.11.04 - 08:40:38
Zitat von: Alexis Pyromanis
flag = prof_doc.rendertoitem ( prof_rt_item )
[quote

Hallo Markus,

der Aufruf muss heißen:

flag = prof_doc.RenderToRTItem( prof_rt_item )

nicht

flag = prof_doc.rendertoitem ( prof_rt_item )

Gruß Sascha
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: MadMetzger am 19.11.04 - 08:44:47
Alles klar!Jetzt geht es wie geschmiert! Manchmal sieht man echt solche Kleinigkeiten nicht...

Danke an alle für die Hilfe!
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 19.11.04 - 14:33:37
Oh Mann, manchmal liest man wirklich das, was man unbedingt lesen möchte ! Auf diesen simplen Tippfehler bin ich partout nicht gekommen.
Hochinteressant ist aber, dass der Compiler das einfach so abnimmt. Die Methode RenderToItem muss dann ja auch eingebaut sein ...

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: mibo11 am 19.11.04 - 15:05:05
Hochinteressant ist aber, dass der Compiler das einfach so abnimmt. Die Methode RenderToItem muss dann ja auch eingebaut sein ...

Bernhard

Würd' mich übrigens auch mal interessieren. Wo steht den der Code. Script Bibliothe, Shared Action o.ä.?

Gruß Sascha
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 20.11.04 - 01:03:46
Wo der Code steht, dürfte vollkommen egal sein. Punkt ist, dass es die (wozu auch immer brauchbare) Methode "NotesDocument.RenderToItem" wohl vorhanden ist. Brauchbar ist das (abgesehen vom Status "undokumentiert") aber wohl überhaupt nicht.

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: Semeaphoros am 20.11.04 - 09:59:13
Berrnhard, RenderToItem muss nicht eingebaut sein. Das ist die riesige, dumme, ekelhafte Kehrseite der "verkürzten Notation". Der Compiler nimmt einfach mal an, RenderToItem könnte ein Feld/Item im Dokument sein und meckert deshalb keinen Syntaxfehler an ........ Is leider so, und ärgert mich auch jedesmal, wenn ich drüberstolpere. Jede Abkürzung - und darum handelt es sich ja bei der Kurzschreibweise - hat eben auch irgendwelche Dornen .....
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 20.11.04 - 10:31:58
Oh ja - natürlich, Jens. Oh, da habe ich aber auf dem Schlauch gestanden. Erst das eine übersehen, dann in der Folge nur noch an "das eine" gedacht ...
Die Fehlermeldung "Type mismatch" ist dann ja auch vollkommen logisch - es wird der Index erwartet, also ein Integer, und keine Rich text item.

Mit der Schamesröte im Gesicht,
Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: audiojosi am 20.11.04 - 13:31:22
Hallo Bernhard,

als Programmierer muss doch nicht rot werden, bloss weil man mal was übersieht oder in Eile falsch interpretiert, gehört doch dazu, sowas. Wir sind ja hier nicht auf Arbeit, und selbst dort..., oder ? :D

[BTW]Warum hast du denn dein Bild entfernt, also ich finds gut, wenn man das Gegenüber wenigstens sieht, wenn man sich schon nicht kennt...[/BTW]

Den Avatar von Dilli find ich übrigens absolut ...BILDeindruckend...  ;D Jo@Schwarzwald: 100 Points  :)

Gruss
Jürgen
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 20.11.04 - 14:17:54
Hallo, Jürgen,

ich habe da aber ganz arg was übersehen - das war wirklich schon peinlich !

Das Bild vorher war mir zu gross (es sah in manchen Postings schon merkwürdig aus: Eine Zeile, und wegen des Bildes mussten die User trotzdem scrollen bis zum nächsten Eintrag).
Ich habe jetzt trotzdem darauf verzichtet, das Bild an den nötigen Stellen rot zu färben (es hat sich ja eh' wieder gelegt  ;D )

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: Semeaphoros am 20.11.04 - 23:15:17
Kann Jürgen nur beipflichten, die Röte ist nicht nötig, that happens to everybody
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 20.11.04 - 23:30:17
Merci à toutes - aber mir ist ein so offensichtlicher Fehler wirklich sehr peinlich. Das hätte ein Blinder mit dem Krückstock sehen müssen ...

Ich arbeite daran.

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: Semeaphoros am 21.11.04 - 21:13:51
Na ja, nachdem ich gestern im Dunkeln gegessen habe, kann ich mir etwa vorstellen, was ein Blinder mit dem Krückstock sehen kann ... mehr als man denkt :-)
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: koehlerbv am 21.11.04 - 21:20:14
Warst Du gestern in Madrid, Jens ?  ;D

Bernhard
Titel: Re: Problem mit RenderToItem der RichTextItem-Klasse
Beitrag von: Semeaphoros am 21.11.04 - 21:28:03
Nein, Versuchskaninchen in einer sehr interessanten Installation in Bern, die erst nächste Woche eröffnet wird :)