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:
Wikipedia.
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.
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
0 comentarios