Ayuda db.search LotusScript

Estoy haciendo un db. Search(), y necesito buscar en todos los documentos que cumplan ciertas condiciones, y ademas la fecha sea una que especifico, el problema es que en la base de datos, el campo fecha tiene el formato largo y la tengo que comparar con la fecha del documento que tengo abierto que tiene formato corto, cuando ejecuto el db. Search no me trae documentos.
searchstr = "form=""" + strForm + """ & ResourceName=""" + uidoc.FieldGetText("ResourceName") + """ & StartDate = """ + "[" + uidoc.FieldGetText("StartDate") + "]" + """"
formula = searchstr
Set collection=db.search(formula,Nothing, 0)
¿Cómo soluciono este problema?.

1 respuesta

Respuesta
Las fechas siempre son muy puñeteras. Voy a poner un ejemplo para ver si lo he entendido bien.
ResourceName tiene la fecha del documento (algo como esto: 09/08/2008)
ResourceName tiene la fecha de la BDA (algo como esto 09/08/2008 00:00:00)
Y no se puede hacer la comparación. Pues bien la solución seria transformar el formato largo en el corto, que al fin y al cabo los documentos a buscar tienen ese formato.
Para extraer la fecha puedes usar este comando:
Date(ResourceName)

Si no estas muy ducho en programación sería algo como esto:
Dim aux as string
aux=Cstr(Date(ResourceName))
searchstr = "form=""" + strForm + """ & "+aux+"=""" + uidoc.FieldGetText("ResourceName") + """ & StartDate = """ + "[" + uidoc.FieldGetText("StartDate") + "]" + """"

Dónde aux es una variable auxiliar que contiene nuestra fecha corta. Si lo he entendido mal dímelo. Cstr() sirve para convertir y dejarlo todo en strings.
Pruébalo y suerte.
Una anotación. El formato de fecha (europeo y americano) es importante a la hora de usar date(). Si ves que ete da problemas, siempre puedes construir la fecha que necesitas:
aux=Cstr(Day(ResourceName))+"/"+Cstr(Month(ResourceName))+"/"+Cstr(Year(ResourceName))
Aux tendrá al final una fecha del tipo: 9/08/2008
Aclaraciones:
uidoc.FieldGetText("StartDate"): tiene la fecha del documento (algo como esto: 09/08/2008)
StartDate tiene la fecha de la BDA (algo como esto 09/08/2008 00:00:00)
En el código:
Dim dateTime As New NotesDateTime( uidoc.FieldGetText("StartDate"))
fechaabuscar=datetime.dateonly
Lo sugerido no funciono:
Dim aux as string
aux=Cstr(Date(StartDate))
Tampoco funciono:
aux=Cstr(Day(StartDate))+"/"+Cstr(Month(StartDate))+"/"+Cstr(Year(StartDate))
El search quedo asi, en ambos casos:
searchstr = "form=""" + strForm + """ & ResourceName=""" + uidoc.FieldGetText("ResourceName") + """ & "+aux+" = """ + "[" + fechaabuscar + "]" + """"
¿Se te ocurre algo?
Muchas gracias, saludos
El siguiente ejemplo puedes pegarlo en un botón con lotus script. Lo que hace es extraer una fecha de un data time. Primero te muestra por pantalla el data time y luego la fecha extraída:

Dim aux As String
Aux=Now 'fecha altual formato 15/09/2008 10:35:20
Messagebox aux
fecha=Cstr(Year(aux))+"/"+Cstr(Month(aux))+"/"+Cstr(Day(aux))
Messagebox fecha 'da como resultado 15/09/2008

Como ves si funciona. En tu caso aux seria el StartDate de la BDA, teniendo en cuenta que tendrías que calcular el startDate de la BDA antes de ponerla en la consulta, y luego ponerla correctamente en la consulta (me refiero a las comillas para que no de error).
PD:
Cstr(Day(aux))' dia
Cstr(Month(aux))' mes
Cstr(Year(aux))' año
Pon el orden correcto. Si es americano el año va antes luego el mes y por ultimo el día, si es europeo, primero el día luego el mes y por ultimo el año. En mi ejemplo he utilizado / como separador. No hay problema en cambiarlo si lo necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas