Volcado de campos

Amigos, tengo un documento recorriendolo con un FORAL los distintos campos de un documento. Estos quiero ponerlos en otro documento que tiene los mismos campos predefinidos, y me da error. Os pongo el código para que quede más claro...
Set infdoc = ws.ComposeDocument ( "ondemand12", "gtncialmasa.nsf", "inf_clientes" )
Forall i In temp.Items
Dim nomcampo As String
nomcampo= i.name
'Hasta aqui todo OK
Dim f As NotesDocument
Set f=infdoc.Document
Al volcar me falla
f.nomcampo=i.text
End Forall
¿Alguna sugerencia?

1 Respuesta

Respuesta
1
El método NotesUIWorkspace. ComposeDocument se utiliza cuando quieres abrir un nuevo documento para que el usuario interactue sobre él antes de grabarlo (UI->User Interface). En este caso deberías trabajar con un NotesUIDocument y utilizar sus métodos, FieldSetText en este caso para rellenar los campos con valores por defecto, que el usuario podrá modificar si quiere antes de grabar el documento.
Si lo que quieres es crear un documento en segundo plano, sin que el usuario intervenga, entonces deberías usar NotesDatabase. CreateDocument, éste te devuelve un NotesDocument sobre el que trabajarías como lo estás haciendo en el ejemplo que me envías. (y no olvides grabarlo - doc.Sabe).
Espero haberte aclarado algo, si tienes más dudas no dudes en preguntar.
Ya le pase el debuj y no coge los valores y además no da ningún error. He probado a signar el valor con el appenditemvalue y tampoco lo cage, incluso he hecho la prueba de poner el valor a pelo y no hay nada que hacer. Ejemplo:
Dim a As notesitem
Set a=f.AppendItemValue("numcliente","434234")
Sin saber cuál es el error que te da es difícil hacerse a la idea de qué es lo que pasa.
En principio el código parece correcto. Se me ocurre que podría ser un problema de tipos de campo. ¿Los formularios son iguales en las dos bases de datos?.
Lo que te sugiero es que lo ejecutes con el Debug activado y veas qué campo es el que da el error, y qué valor está intentando pasar, podría ser una buena pista.
Si no consigues nada, dame más información e intentamos investigarlo más a fondo.
Ya he convertido el uidocument a un notesdocument para trabajar con el, el problema que sigo teniendo es que no coge los valores.
Creo que optas por la segunda opción (sin interacción del usuario). Entonces no se trata de que conviertas un UIDocument, sino que crees un NotesDocument.
Podría ser algo así:
Dim ss As New NotesSession
Dim db0 As NotesDatabase, doc0 As NotesDocument
Dim db1 As notesDatabase, doc1 As NotesDocument
Set db0 = ss.CurrentDatabase
Set doc0 = 'Obtener el documento origen
Set db1 = ss.GetDatabase("servidor","archivo.nsf",False)
Set doc1 = db1.CreateDocument
Call doc1.AppendItemValue("Form", "inf_clientes")
Forall it In doc0.Items
If Instr(it.name,"$") = 0 And Lcase(it.Name) <> "form" Then 'campos del sistema
Call doc1.AppendItemValue(it.name, it.values)
' ó Set nItem = New NotesItem(doc1,it.name, it.values)
End If
End Forall
doc1. Sabe
A ver qué tal así ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas