Trabajando con Lotus Notes para la gestión de incidentes me encontré con una situación en la cual necesitaba mostrar en las vistas una columna con información extraída de un campo de texto. Esta información estaba localizada entre una cadena especifica (era una cadena de números) y para consultarla de otra forma necesitaba acceder al documento y buscar la dichosa cadena lo cual era una tarea muy ineficiente cuando tenía que consultar muchos documentos.
Este script para reporting me facilitó mucho el trabajo de organización y localización de los datos al tener todo a vista de pájaro.

¿Que es Lotus Notes? Desde la Wiki:


Lotus Domino/ Notes es un sistema de comunicación el cual permite enviar correo electrónico y manejo de Calendarios y Agendas. También es una plataforma de colaboración que permite compartir bases de datos con información, como sería bases documentales, de procedimientos, manuales o foros de discusión. Y finalmente es una plataforma de Coordinación – utilizando aplicaciones Notes con flujo de trabajo. Ejemplo de ello sería cualquier proceso de una empresa que requiere que un documento fluya entre varias personas o departamentos para su autorización, como por ejemplo una solicitud de vacaciones, solicitud de anticipo de viáticos y cuentas de gastos, etc. Todo esto es susceptible de manejarse de forma electrónica mediante Lotus Notes.

Wikipedia.

El programa básicamente lo que hace es:

  • Obtiene los números de documentos guardados en una cadena específica.
  • Accede a esos documentos y trae los valores de diferentes campos
  • Guarda esos valores en el documento original en campos específicos para que puedan ser mostrados en la vista.
  • Si mas de un documento es encontrado va concatenando los valores para mostrarlos todos en la vista.

Sin mas aqui dejo el código. Cualquier duda siempre puedes ponerte en contacto conmigo.

Sub Click(Source As Button)
	On Error Goto processerror
	
	Dim ViewString As String
	Dim datacol As NotesDocumentCollection
	Dim w As New NotesUIWorkspace
	Dim searchFormula As String
	
finddata1  = "COD-"
finddata2  = "-ES"
keyvalue   =  "Campotexto"
savevalue1 =  "ColumnaDestino1"
savevalue2 = "ColumnaDestino2"
getvalue1  =  "DatoOrigen1"
getvalue2  =  "DatoOrigen2"

	ViewString= w.Currentview.Viewname	
	Set dataview = db.getview(ViewString)
	Set datadoc = dataview.getfirstdocument
	
	Do While Not (datadoc Is Nothing)
		crxstart = 1
		begin = 1
		count = 1
		If Not Isempty( datadoc.GetItemValue(keyvalue ) ) Then
			cont   = datadoc.GetItemValue(keyvalue)
			begin = Instr(begin,crxcont, finddata1)
			
			Set Item =  datadoc.replaceItemValue( savevalue1 ,  "" )
			Set Item =  datadoc.replaceItemValue( savevalue2 , "" )

			Do While Not ( Isempty(begin) ) 
				crxstart = Instr(crxstart,crxcont, finddata1)
				If crxstart = 0 Then
					begin = ""
					Exit Do
				End If				
				crxfinish = Instr(crxstart, crxcont, finddata2)
				savevalue1  = Mid(crxcont, crxstart, crxfinish-crxstart)
				If Not Isempty( crxdata ) Then
					searchFormula = {FORM = "INC" & ChangeReqNbr = savevalue1 } 
					Set datacol = db.Search(searchFormula, Nothing,0)
					
                                        If Not datacol Is Nothing Then
                                                Set datacrx = datacol.GetFirstDocument
						Itemcrx = datadoc.GetItemValue(savevalue1)
                                                crxdata =  datacrx.GetItemValue(getvalue1)
                                                If Not Isempty( crxdata ) Then 
						      If Itemcrx(0) = "" Then
							     Itemcrx(0) =  crxdata
						      Else
							     crxdata  = Arrayappend( itemcrx, savevalue1 )
						      End If
						      Set Item =  datadoc.replaceItemValue( savevalue1 , crxdata  )
						End If
						Itemcrx = datadoc.GetItemValue(savevalue2)
						crxdata =  datacrx.GetItemValue(getvalue2)
						If Not Isempty( crxdata ) Then 
							If Itemcrx(0) = "" Then
								Itemcrx = crxdata   
							Else
								crxdata   = Arrayappend( itemcrx, crxdata )
							End If
							Set Item =  datadoc.replaceItemValue( savevalue2 , crxdata   )
						End If
					End If	
				End If
			Loop
			Call datadoc.Save(True, True)
			Set datadoc = dataview.GetNextDocument (datadoc)
		End If
	Loop
	
	dataview.Refresh
	Exit Sub 
	
processerror:
	Msgbox "ERROR on line " & Cstr(Erl) & " (" & Cstr(Err) & ") - " & Error$
	Exit Sub 
End Sub