Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Nexus am 30.11.04 - 08:59:30

Titel: Feld erzeugen in LS
Beitrag von: Nexus am 30.11.04 - 08:59:30
Hallo,

sicherlich ist es für viele leicht, aber ich habe den Befehl zum Erzeugen von Feldern leider nur für die Formelsprache gefunden. Könntet ihr mir ihn mal nennen ?  ;)
Titel: Re: Feld erzeugen in LS
Beitrag von: mibo11 am 30.11.04 - 09:20:45
... in der Klasse NotesDocument

Call doc.replaceitemvalue("feldname","wert")

oder

Call doc.AppendItemValue("feldname","wert")

oder

New NotesItem( doc, "feldname", "wert", typ) oder oder oder ..

du siehst du solltest dich ein wenig mit den Klassen auseinander setzen, ganz so einfach wie mit FIELD feldname:= "wert" oder @SetField("feldname";"wert") ist es nicht.


Schaue dir doch einmal die o.g. Klasse an, da soltest du schon etwas finden.

Gruß Sascha
Titel: Re: Feld erzeugen in LS
Beitrag von: Nexus am 30.11.04 - 09:26:53
dachte replaceitem... wäre um in einem Feld einen wert zu überschreiben. Dass man damit auch Felder erzeugen kann, hab ich nicht gewusst ( übersehen in der Designer Hilfe )  :o
Titel: Re: Feld erzeugen in LS
Beitrag von: mibo11 am 30.11.04 - 09:31:46
gern geschehen und viel Erfolg ...

Gruß Sascha
Titel: Re: Feld erzeugen in LS
Beitrag von: rar am 30.11.04 - 09:34:16
Du kannst auch ganz einfach
doc.NeuerFeldname = "Wert"
schreiben. Dann hast auch ein Feld im Dokument.
Titel: Re: Feld erzeugen in LS
Beitrag von: Glombi am 30.11.04 - 09:35:26
Vor dem AppendItemValue kann ich nur dringend warnen !!!

Aus der Hilfe:
Note  In general, ReplaceItemValue is favored over AppendItemValue. If an item of the same name already exists in a document, AppendItemValue creates a second item of the same name, and the duplicate items are not accessible except through a work-around. If you are creating a new document, AppendItemValue is safe.

Mir ist schleierhaft, warum man zwei gleiche Items in einem Dokument haben will. Ausser RTF fällt mir da gar nichts ein.
Und es ist somit ein Quell unendlicher Freude für die Fehlersuche !

Andreas
Titel: Re: Feld erzeugen in LS
Beitrag von: Nexus am 30.11.04 - 09:42:16
Du kannst auch ganz einfach
doc.NeuerFeldname = "Wert"
schreiben. Dann hast auch ein Feld im Dokument.

Bei mir funktioniert der Befehl nicht :(
Titel: Re: Feld erzeugen in LS
Beitrag von: rar am 30.11.04 - 09:47:12
Sollte aber.
Ist das doc befüllt? Hast du es eventuell nacher nicht abgespeichert?
Titel: Re: Feld erzeugen in LS
Beitrag von: Nexus am 30.11.04 - 09:54:35
ja, das Doc ist gefüllt.
Ja, ich habe es abgespeichert.
Titel: Re: Feld erzeugen in LS
Beitrag von: rar am 30.11.04 - 09:58:34
Dann poste mal den Code!
Titel: Re: Feld erzeugen in LS
Beitrag von: Nexus am 30.11.04 - 10:09:16

Dim docDB1 As NotesDocument
Dim db1 As NotesDatabase
Dim session As New NotesSession
Dim searchview1 As NotesView


Set db1 = session.GetDatabase( "", "c:\Dokumente und Einstellungen\Markus\Eigene Dateien\Notes\vergleich\VergleichDB1.nsf" )
Set searchview1=db1.GetView("Groups")
Set docdb1= searchview1.GetNextDocument(docdb1)

' call docdb1.errdescription = "Test Test"


In das docdb1 Dokument möchte ich ein Feld erzeugen.

Aber mit deinem Vorschlag, bleibt die Zeile rot.
Kann sein, dass ich errdescription als Notesitem definieren muss ?
Titel: Re: Feld erzeugen in LS
Beitrag von: Driri am 30.11.04 - 10:13:52
Lies doch mal genau, was rar geschrieben hat. Wo siehst Du denn da ein "Call".

Und anzumerken ist, Du mußt das Dokument dann auf jeden Fall mit Save speichern.
Titel: Re: Feld erzeugen in LS
Beitrag von: Nexus am 30.11.04 - 10:18:57
verdammt stimmt. Ahh... hab in der letzten Zeit viel Call verwenden müssen. Ist ja keine Klasse. Ok. Fehler gefunden.


thx
Titel: Re: Feld erzeugen in LS
Beitrag von: Glombi am 30.11.04 - 10:26:01
Die Lösung von rar nennt sich übrigens "Extended Class" Syntax"

Aus der Hilfe:
"Extended class" syntax
You can also change an item's value using the NotesDocument "extended class" syntax, which eliminates the need for ReplaceItemValue. For example, you have the following script:
Dim item As NotesItem
Set item = doc.ReplaceItemValue _
( "Subject", "Update on stock options" )
Call doc.Save( False, True )
You can achieve the same result by doing the following:
doc.Subject = "Update on stock options"
Call doc.Save( False, True )
This syntax lets you treat NotesDocument as an "extended class" by using an item name as if it were a property of NotesDocument. In the example above, "Subject" is used as if it is a property of the NotesDocument class. The result is the same as if you used ReplaceItemValue, except that ReplaceItemValue returns a NotesItem object representing the item you just created, and the IsSummary property defaults to True.


Es sei darauf hingewiesen, dass die Performance schlecht im Vergleich zu ReplaceItemValue ist (dafür hat der Programmierer weniger zu tippen).

Andreas
Titel: Re: Feld erzeugen in LS
Beitrag von: Thomas Schulte am 30.11.04 - 10:46:22
Deswegen sollte man AppendItemValue immer nur in Verbindung mit hasitem zusammen benutzen. wenn man in eine bereits vorhandenes Item reinschreiben will. Dafür ist das Dingens nämlich da.

Thomas
Titel: Re: Feld erzeugen in LS
Beitrag von: Glombi am 30.11.04 - 11:00:07
Deswegen sollte man AppendItemValue immer nur in Verbindung mit hasitem zusammen benutzen. wenn man in eine bereits vorhandenes Item reinschreiben will. Dafür ist das Dingens nämlich da.

Thomas
Hi Thomas,
kannst Du das genauer erläutern? Warum sollte man kein ReplaceItemValue nehmen sondern erst eine Abfrage auf HasItem?

Andreas