Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: ewald am 18.05.07 - 12:06:38

Titel: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 12:06:38
Hallo zusammen,

hab folgendes Problem mit GetItemValue:

Ich kopiere ein Document in einer View mit einem Button (Agent dahinter) mit folgendem Code (der auch soweit funktioniert):

-----Start code-------
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim docA As NotesDocument
Dim docB As NotesDocument
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set docA = collection.GetFirstDocument()
   
Dim NewStatus As String, NeuDat As Variant
NewStatus = "Draft"
NeuDat = Now
   
'Holen des aktuellen Benutzers
Dim nam As NotesName
Dim user As String      
user = session.UserName      
Set nam = session.CreateName(user)
   
If Not (docA Is Nothing) Then
  Set docB = New NotesDocument( db )
  Call docA.CopyAllItems( docB, True )
      
  'An der Stelle kommt mein GetItemValue code!!!!!

  'Reset some fields in the new document (docB)
  Call docB.ReplaceItemValue( "CopyFlag", "1" )
  Call docB.ReplaceItemValue( "vCopyFlag", "Copy" )
  Call docB.ReplaceItemValue( "DocOriginator", nam.Abbreviated )
  Call docB.ReplaceItemValue( "DocOrigDate", NeuDat )   

  Call docB.Save( True, True )
  Messagebox  "Document successfully copied."
   
Else
  Messagebox "No documents found"
End If
End Sub
-----End code-------

Nun möchte ich an der markierten Stelle im Code den Inhalt eines Feldes der Form lesen. Das wollte ich mit GetItemValue und dem folgenden Code machen:
      
Dim wert As String
wert=docB.GetItemValue("FormName")
Msgbox wert

Ich krieg an der Stelle aber einen Typemissmatch :-(

Grüße Ewald
Titel: Re: Problem mit GetItemValue
Beitrag von: koehlerbv am 18.05.07 - 12:14:23
GetItemValue liefert ein Array zurück, Messagebox erwartet aber einen String! Ergo muss man vor der Ausgabe mit Messagebox einen String erzeugen.

Bernhard
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 12:18:02
Bernhard,

hab jetzt  MsgBox Cstr(wert)   der Typemissmatch kommt aber immer noch

Ewald
Titel: Re: Problem mit GetItemValue
Beitrag von: m3 am 18.05.07 - 12:20:36
Ewald - wie wärs, wenn Du das Cstr DORT einbaust, WO Du dem STRING ein ARRAY ZUWEIST, und nicht dort, wo Du den String ausgibst?
Titel: Re: Problem mit GetItemValue
Beitrag von: koehlerbv am 18.05.07 - 12:22:26
Cstr dient nicht dazu, ein Array in einen skalaren Wert zu verwandeln.

Einfache Möglichkeiten für die Ausgabe eines per GetItemValue geholten Wertes stehen gleich in den ersten Beispielen der DesignerHelp. Wird die eigentlich gar nicht benutzt??

Bernhard
Titel: Re: Problem mit GetItemValue
Beitrag von: umi am 18.05.07 - 12:29:18
Wie mache ich aus einem Array einen Wert?
Ganz einfach mit (0)

also

wert = docB.getitemvalue("FormNAme")(0)


RTFM  :-P
Titel: Re: Problem mit GetItemValue
Beitrag von: koehlerbv am 18.05.07 - 12:33:53
Damit "macht" man aber aus einem Array keinen skalaren Wert, sondern man zieht damit nur den ersten skalaren Wert aus einem Array ...

Bernhard
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 12:37:28
Die Designer Hilfe hab ich vorhin schon durchgenudelt. Da hab ich auch was gefunden:

Dim subj As Variant
subj = doc.GetItemValue( "Subject" )
Messagebox( subj( 0 ) )

Meins sieht doch eigentlich auch nicht so sehr anders aus

Dim wert As Variant
wert=docB.GetItemValue("FormName")
Messagebox (wert (0) )

Ewald
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 12:47:31
sorry, hab ich ganz vergessen: ich krieg ne leere msgbox zurück
Titel: Re: Problem mit GetItemValue
Beitrag von: umi am 18.05.07 - 12:53:13
Wo ist nun das Problem? Da wird wahrscheinlich das Feld "FormName" leer sein....
schon mal den Debugger angeworfen?
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 13:16:13
Das Feld ist aber nicht leer. Wenn ich nämlich das neu, kopierte Doc anschaue, dann steht da in dem Feld was drin. Kann es sein, dass ich vor meiner Aktion das neu kopierte Doc einmal speichern muss?

Ewald
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 13:17:54
Speichern hilft auch nix, hab ich grad probiert
Titel: Re: Problem mit GetItemValue
Beitrag von: umi am 18.05.07 - 13:23:28
Wie schaust Du das neue Dokument an? via Maske oder über die Dokumenteneigenschaften? Könnte es ein Computed for display feld sein?
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 14:00:06
Ich glaub, ich hab den Fehler gefunden:

Das Feld ist Computed when composed. Das ist aber nicht das Problem. Ich hab mal ein neues Ursprungs document angelegt und das dann kopiert und siehe da es funktioniert. Nehm ich vorhandenes Doc, dann gehts nicht. Wenn ich ein vorhandenes Doc allerdings erneut speichere, dann gehts auch da.

Ewald
Titel: Re: Problem mit GetItemValue
Beitrag von: ewald am 18.05.07 - 14:14:09
@All,

es funktioniert!!


@Bernhard,
so wie es in der Designer Hilfe steht hab ich es ja zu allererst auch gehabt.
Designer Hilfe ist immer mein erster Anlaufpunkt.

Das Problem war wirklich nur, dass ich es immer mit existierenden Dokumenten getestet hab und da war meine MsgBox halt immer leer. Da dacht ich immer, es liegt an meinem Programmcode.

Danke nochmal an alle!

Grüße Ewald