Lotus Notes – Columnas con información extraída del contenido.

por | Ene 14, 2020 | otros

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

Related Posts

Código ejemplo del desarrollo de extractor de contenido relevante

Hace unos días mostré un plugin de wordpress (más que nada es solo un Shortcode con administración de la caché generada) donde comenté que hacer un extractor del contenido relevante de una página de noticias es algo muy sencillito que solo necesita de un par de loops. Y para qué quiero esto uno puede preguntarse….

Extractor de contenido relevante de páginas web

Extractor de contenido relevante de páginas web

Este es un extractor de contenido relevante muy sencillo hecho con DOMDocument y un par de loops. Es cierto que ya hay extractores de contenido en PHP pero estos hacen uso de librerías externas ( Readability  ) o tienen un método de detección muy sencillo que hace uso solamente de los bloques de texto, lo…

0 comentarios