Problema al ejecutar script

Hola, al lanzar el script siguiente, siempre me da el mismo error en el mismo lugar. El error es: "Object Variable Not Set" en la línea "Set rtitem = doc.GetFirstItem( "Body" )". Me puede ayudar alguien.. Adjunto script:
Dim doc As NotesDocument
Dim rtitem As Variant
Dim fileCount As Integer
Const MAX = 100000
fileCount = 0
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) _
And ( o.FileSize > MAX ) Then
fileCount = fileCount + 1
Call o.ExtractFile _
( "d:\rtds\newfile" & Cstr(fileCount) )
Call o.Remove
Call doc.Save( True, True )
End If
End Forall
End If

1 Respuesta

Respuesta
1
Parte de este script lo has debido sacar de la ayuda, lo digo por el comentario de "'... set value of doc.." que es precisamente lo que te falta.
Lo que quiere decir esa frase es que tienes que dar valor al objeto doc para luego poder trabajar con el. Y el error lo que te dice es que ese objeto no está inicializado, es decir, no tiene nada dentro, y por lo tanto al hacer el "GetFirstItem" el ordenador piensa "¿Coger el first item de qué?" (que si, que si, que los ordenadores tienen vida propia...)
Tienes que darle un valor a la variable doc ya sea buscando un documento en una vista o algo, y luego hacer
Set doc = lo que sea...
Hola,
Muchas gracias por tu ayuda, pero te habrás dado cuenta que estoy muy verde en esto de los scripts. Me podrías decir que podría poner en esa línea para que funcionase.
Gracias de nuevo,
No te preocupes, todos hemos sido novatos alguna vez.
Tienes que seleccionar el documento de algún sitio. Normalmente se hace con vistas. Defines una vista con documentos que sigan unos criterios específicos, y ordenados por los campos que quieras. Te lo pondré en un ejemplo práctico...
Imagina una base de datos con alumnos, y quieres coger el documento de Pepito Grillo :)
Tienes que crear una vista, llamémosla "AlumnosNombre", cuya selección sea la de todos los documentos del tipo alumno, que la primera columna sea el nombre y que la columna esté ordenada ascendentemente. Para acceder al documento tienes que hacer (Suponiendo que el script está en la misma BD:)
Dim session As New NotesSession
Dim db As NotesDatabase 'Será el objeto que guarde nuestra base de datos
Dim vista as NotesView 'Objeto que contendrá nuestra vista
Dim doc as NotesDocument 'Objeto que contendrá nuestro documento
Set db = session.CurrentDatabase 'Le doy valor a la base de datos actual
Set vista = db.GetView("AlumnosNombre") 'Ahora el objeto contiene la vista con los alumos
Set doc = vista.GetDocumentByKey("Pepito Grillo") 'Le digo que de la vista me coja aquel que tenga en la primera columna este valor
Msgbox doc.Nombre(0) 'Saco un mensaje con el nombre del alumno (suponiendo que el el campo que lo contiene se llama "Nombre" hehehe...)
NOTAS: El GetDocumentByKey siempre busca por las primeras columnas de la vista. En este caso, solo hemos necesitado la primera, pero si quisieras buscar por Provincia y Ciudad, la primera columna sería la provincia y la segunda la ciudad, ordenadas las dos, y le pasarías al GetDocumentByKey un array:
Dim array(1) as string
ARray(0) = "Cantabria"
Array(1) = "Santander"
set doc = vista.GetDocumentByKey(array)
Si por cualquier cosa encontrara más de un documento que coincidiera con el criterio (Dos alumnos de SAntander) El GetDoumentByKey te devuelve solo el primero. Si quieres todos mira la ayuda del NotesDocumentCollection.
Hay un par de webs de Notes con foros donde puedes buscar información, y si no encuentras, puedes hacer preguntas. Son:
http://www-10.lotus.com/ldd/46dom.nsf (notes.net, en inglés)
www.notesring.com (en español)
Perdona que te moleste otra vez...
Me sigue dando error. Te adjunto el código:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim vista As NotesView
Dim doc As NotesDocument
Dim rtitem As Variant
Dim fileCount As Integer
Const MAX = 1
fileCount = 0
Set db = session.CurrentDatabase
Set vista = db.GetView("Nombre")
Set doc = vista.GetDocumentByKey("Karmelo Virumbrales")
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) _
And ( o.FileSize > MAX ) Then
fileCount = fileCount + 1
Call o.ExtractFile _
( "d:\rtds\" & Cstr(fileCount) )
Call o.Remove
Call doc.Save( True, True )
End If
End Forall
End If
End Sub
Lo que pretendo que haga es: Cuando reciba un correo de Karmelo Virumbrales, que me extraiga los documentos adjuntos en d:\rtds\ . Me podrías ayudar... G R A C I A S
Parece estar todo bien, a menos que no tengas un campo "Body" en el documento:
Set rtitem = doc.GetFirstItem( "Body" )
Esta linea lo que hace es extraer los documentos adjuntos del campo (que tiene que ser de texto tico) donde estén adjuntados los ficheros...
Asegúrate de que el nombre del campo y el tipo están bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas