Creado el 16 nov. 2011 15:02por Daniel Recio
Hola Manolo.
Vemos que has superado la primera parte que es sacar elementos de una vista a traves de un agente.
¿Como lo haces? llamas a una URL tipo http://servidor/BD.NSF/AGENTE?openagent ?
Si es asi y en tu agente por ejemplo pintas la pagina las lineas de la vista y luego el link de paginar, deberias apuntar a la misma URL pero le pones parametros tipo
http://servidor/BD.NSF/AGENTE?openagent&comienzo=xx&cuantos=YY asi que desde tu mismo agente puedes preguntar por esos parametros y controlar tu bucle.
Aun asi me surge la duda, de por que no utilizas una vista tal cual.
Leer más...
|
Creado el 17 nov. 2011 14:20por Manolo Molina
¡ Hola ¡
Bueno he probado eso de poner agente?openagent&comienzo=&cuantos=
y no me funciona ¿comienzo y cuantos se referiere a nombres de campos o significa tal cual comienzo y cuantos? a no ser que se problema de comillas poniendo comienzo=1&cuantos=5 me saca todos.....
El notes tiene gran potencial , pero me seria de gran ayuda ejemplos de script , en php por ejemplo me instalo en una memoria usb el servidor en local con herramientas como wove ( que incluy phpadmin) pongo las paginas y pruebo scripts, que se encuentras a patadas pero aqui me esta resultando como a indiana jones eonctrar el arca
Leer más...
|
Creado el 17 nov. 2011 19:14por Daniel Recio
Bueno te dejo una referencia http://www.codestore.net/store.nsf/unid/DOMM-4Q8G7N
La historia seria asi, dentro de tu agente (si quieres lo pones en un TXT y lo anexas o me lo mandas por correo DANIEL.RECIO @ SLUG.ES)
tendrias que declara un objeto tipo NOTESDOCUMENT
DIM DOCAGENTE AS NOTESDOCUMENT
Luego haces una asignacion al DOCUMENTCONTEST es decir el documento actual (el agente)
SET DOCAGENTE=SESION.DOCUMENTCONTEXT
En este documento virtual tendras campos que corresponden con variables CGI por ejemplo el que ati te interesa es el campo QUERY_STRING o QUERY_STRING_DECODED
Que precisamente son los parametros que van despues del ?OPENAGENT
los metes en variables por ejemplo COMIENZO y CUANTOS
Luego coges lo que necesitas y con eso controlas tu bucle.
Imaginemos que tu bucle pinta los 10 primeros docs de la vista, y lo haces con un FOR A=1 TO 10
Ahora tendras que recoger esos valores, y recorrer la vista hasta el elemento COMIENZO y en tu bucle hacer el FOR A=1 TO CUANTOS
De todas maneras si quieres mandame un correo mas concreto y te pongo el codigo, aunque a mi me gusta que se ponga aqui para que ademas de ti que te has atrevido a preguntar, los otros que no se atreven lo vean.
Un Saludo y mucho animo
Leer más...
|
Creado el 18 nov. 2011 14:32por Manolo Molina
¡ Hola ¡
Bueno algo de lo que me expones lo comprendo pero no se exactamente como defninirlos, este es el codigo:
Sub Initialize
Dim s As New NotesSession
Dim ESTABD As NotesDatabase
Dim VISTA As NotesView
Dim count As Integer
Dim nav As NotesViewNavigator
Dim documento As NotesDocument
Set ESTABD=s.CurrentDatabase
Set VISTA = estabd.GetView("By Category")
Set VISTA=estabd.GetView("wwadmin")
Set documento=vista.GetFirstDocument()
Call encabezado ("Quejas de usuarios",xtipo)
Print "<table summary='Tabla quejas' class='bordeTablaInteriorIzq' align='center' >"
Print "<caption >QUEJAS RECIBIDAS</caption>"
Print "<thead class='cabeceraAzul'>"
Print" <tr >"
Print " <th scope='col'></th>"
Print " <th scope='col' >Clave</th>"
Print " <th scope='col' >Fecha Alta</th>"
Print " <th scope='col' >Apellidos y nombre</th>"
Print " <th scope='col' >Comentario</th>"
Print" <th scope='col' >Estado</th>"
Print" </tr>"
Print"</thead>"
Print "<tfoot class='cabeceraAzul'>"
Print" <tr >"
Print" <th scope='row'>2011</th>"
Print "<td colspan='5'> </td>"
Print" </tr>"
Print" </tfoot>"
Print" <tbody>"
While Not documento Is Nothing
Print"<tr class='cabecerRojo'>"
Print " <td style='padding:10px 0 0 10px'>"
Print " <a href='/inet/defenciu.nsf/modiQueja?openagent&clave="
Print documento.clave(0)
Print "'><img src='/graficos/botonBuscar.jpg' alt='ver registro' title='ver registro' style='border:0;'</a> </a>"
Print " </td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.clave(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.falta(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.apellidos(0)+documento.nombre(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.motivo(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.estado(0)+"</td>"
Print "</tr>"
Print "<tr><td colspan='6' height='1' bgcolor='#000'></td></tr>"
Set documento=vista.GetNextDocument(documento)
Wend
Print "</tbody>"
Print"</table>"
End Sub
Me muestra la vista y 900 registros, la manera de paginarlos , he visto la pagina que me envias pero como me falta base , se me escapan los conceptos, como no conozco los arboles no veo el bosque... Gracias por tu respuestas
Bueno
Leer más...
|
Creado el 17 nov. 2011 11:51por Manolo Molina
¡ Hola¡
Gracias por tu respuesta, es muy util para mi.
Pues esa pregunta me la he hecho yo tambien , porque teniendo las vistas ya adaptadas creo una a través de un agente....RESPUESTA RECIBIDA...como son unos datos de acceso restringido las vistas habituales a través del View template default, presenta problemas de seguridad ...¿ que problemas ? vete tu a saber , yo he tenido que recurrir a un foro donde amablemente responden a mis preguntas....la información ( cosa que no entiendo ) aqui fluye como el agua en el desierto....
Leer más...
|
Creado el 17 nov. 2011 19:05por Daniel Recio
Eso que te han dicho es MENTIRA o DESCONOCIMIENTO.
Precisamente cuando sacas los datos con agentes es cuando quizas si no eres cuidadoso sacas datos que no debes.
Me explico:
Imagina que tienes una BD con datos restringidos (solo los ve un admin, etc) pero le haces un maravilloso agente FIRMADO por un ADMIN que si ve todo.
Resulta que la peticion de la URL del agente la hace alguien ANONIMO pero el agente se ejecuta con los permisos del ADMIN (porque en las propiedades del agente no has puesto que se active con las credenciales del user) asi que el resultado es que el anonimo recibe los datos.
Si tu sacas las vistas de modo "nativo" la seguridad se aplica en funcion del user que la pide y si no tienes derecho no veras lo que no debes.
Otra cosa es que te hayan contado eso de la seguridad y lo que pase es que de manera nativa sea mas complicado DECORAR o mezclar datos de varias vistas etc., pero como todo se puede hacer.
Ahora te contesto a la otra parte.
Leer más...
|
Creado el 23 nov. 2011 12:04por Manolo Molina
Al pasar el codigo al agente, estas variables se quedan en rojo en Initialize, pense que eran por que no estaban definidas con un Dim, pero no es eso.
CUANTOS=CInt(parametro(Ucase(DOCWEB.QUERY_STRING_DECODED(0)),"CUANTOS"))
COMIENZO=Cint(parametro(Ucase(DOCWEB.QUERY_STRING_DECODED(0)),"COMIENZO"))
En fin te ha caido un pesado con pocos conocimientos, gracias por todo.
Creo que me queda poco tiempo trabajando por aqui , pero yo intentare aprender mientras este, ahora me han puesto la tarea herculea de crear un formulario para subir documentos a una base de datos,con el añadido de que suba imagenes , me dicen con la elocuencia y simpatia que eso se hace con un UNID entre la base de datos de imagenes y la base de datos de documentos para enlazar la imagen correspondiente con los datos. Han hablao de que para subir objetos notes usa un formulario multipartes ..ESO QUE ES ¡¡¡¡
En el momento que quieras deja de contestar no es cuestion que me estes asesorando a cada paso.
Gracias por todo, te estoy enormemente agradecido
Manolo
Granada
Leer más...
|
Creado el 23 nov. 2011 22:54por Daniel Recio
Igual te salen en rojo porque no estan declarados o los has declarado como STRING, al poner CINT lo conviertes a entero, asi que la declaracion deberia ser
DIM CUANTOS AS INTEGER
Animo hombre, y se prudente que por aqui para gente de tu mismo dominio.
Un formulario multipartes como te han dicho al final es la declaracion HTML del elemento FORM, pero vamos que eso lo hace el Lotus solito, no tienes que hacer nada. Para mi que te estan calentando demasiado y a lo mejor es mejor para ellos y para ti invertir en la base, poco a poco.
Tu no dudes en preguntar lo que quieras
Leer más...
|
Creado el 25 nov. 2011 14:26por Manolo Molina
¡ Hola ¡
FUNCIONA EL REPAGINAR EN UN AGENTE EL PROBLEMA ERA
Function parametro(cadena As String, variable As String) As String
If InStr(cadenza,variable)>0 Then
' LO HE ENCONTRADO
cadena2=StrToken(CADENA,PARAMETRO+"=",2)
If InStr(cadena2,"&")>0 Then
parametro=StrToken(cadena2,"&",1)
Else
parametro=cadena2
End If
Else
' NO ESTA ESE PARAMETRO
parametro="0"
End If
End Function
que pone cadena2 cadena cadenza, y mi atrevimiento porque yo veo un codigo y lo respeto si pone cadenza es cadenza
pero esta vez puse cadena en todos.
GRACIAS .
Leer más...
|
Creado el 25 nov. 2011 15:58por Daniel Recio
Me alegro hombre, si es que con mis dedazos lo raro es que no me equivoque
Leer más...
|
Creado el 29 nov. 2011 14:12por Manolo Molina
¡ Hola ¡
Gracias por tu amables respuestas, son dedos de pianista sin duda , el teclado estaba mal.
Me queda un poquito para alcanzar el final en este tema, ahora tengo que crear un ciclo para que cree los numeros de paginas , y puedo imaginar como hacerlo, pero me surge una duda , yo puedo crear un ciclo que sume a comienzo una cantidad y cree numeros de paginas con un comienzo =comienzo+20 , pero como al mismo tiempo leo los registros para saber el final, son 900 registros si calculo 25 por pagina , pues pongo esas paginas, pero lo chuli es que automaticamente lea el numero de registro y cree las paginas en funcion del numero de registros, en php count , en lotus...¿?
Un saludo
Leer más...
|
Creado el 29 nov. 2011 14:32por Manolo Molina
¡ Hola ¡
Estaba revisando el agente y la repaginación que funcionaba en principio. Pero viendolo con mas detenimiento el CUANTOS funciona , pero el COMIENZO no, como veia que ponia registros mas o menos y aparecian mas o menos, pense que funcionaba , pero lo que hacee es poner más o menos registros pero no empieza desde comienzo sino siempre desde el principio.
el parametro quedo asi:
Function parametro(cadena As String, variable As String) As String
If Instr(cadena,variable)>0 Then
' LO HE ENCONTRADO
cadena=Strtoken(CADENA,PARAMETRO+"=",2)
If Instr(cadena,"&")>0 Then
parametro=Strtoken(cadena,"&",1)
Else
parametro=cadena
End If
Else
' NO ESTA ESE PARAMETRO
parametro="0"
End If
End Function
Leer más...
|
Creado el 15 dic. 2011 12:42por Manolo Molina
¡ Hola ¡
Al final con ayuda consegui que funcionara la repaginacion con un agente dejo el codigo por si es util a alguien
Sub Initialize
Dim s As New NotesSession
Dim A As Integer
Dim ESTABD As NotesDatabase
Dim VISTA As NotesView
Dim documento As NotesDocument
Dim DOCWEB As NotesDocument ' ESTO SERA EL AGENTE EN MEMORIA PARA COGER LOS PARAMETROS
Set DOCWEB=S.DOCUMENTCONTEXT ' ESTO SERA EL AGENTE EN MEMORIA PARA COGER LOS PARAMETROS
Dim CUANTOS As Integer
Dim COMIENZO As Integer, x As Integer
Dim totaldocs As Long, paginas As Long, y As Long, z As Long
Dim misvalores As String
misvalores=Lcase(DOCWEB.QUERY_STRING_DECODED(0))
xtipo=""
Call encabezado ("Quejas de usuarios",xtipo) ' AQUI NO SE SABE QUE ES XTIPO
' CUANTOS=Cint(parametro(Ucase(DOCWEB.QUERY_STRING_DECODED(0)),"CUANTOS"))
cuantos=Val(davalor(misvalores, "cuantos"))
comienzo=Val(davalor(misvalores, "comienzo"))
If CUANTOS=0 Then CUANTOS=10' Por poner un minimo de 10 en caso de no decir CUANTOS
' COMIENZO=Cint(parametro (Ucase(DOCWEB.QUERY_STRING_DECODED(0)),"COMIENZO"))
If comienzo=0 Then comienzo=1
Set ESTABD=s.CurrentDatabase
Set VISTA=estabd.GetView("wwadmin")
totaldocs=vista.EntryCount
paginas=Int(totaldocs/cuantos)
'Set documento=vista.GetFirstDocument()
Set documento=vista.GetNthDocument(comienzo)
Print "<table summary='Tabla quejas' class='bordeTablaInteriorIzq' align='center' >"
Print "<caption >QUEJAS RECIBIDAS</caption>"
Print "<thead class='cabeceraAzul'>"
Print" <tr >"
Print " <th scope='col'></th>"
Print " <th scope='col' >Clave</th>"
Print " <th scope='col' >Fecha Alta</th>"
Print " <th scope='col' >Apellidos y nombre</th>"
Print " <th scope='col' >Comentario</th>"
Print" <th scope='col' >Estado</th>"
Print" </tr>"
Print"</thead>"
Print "<tfoot class='cabeceraAzul'>"
Print" <tr >"
Print" <th scope='row'>2011</th>"
Print "<td colspan='5'> </td>"
Print" </tr>"
Print" </tfoot>"
Print" <tbody>"
' ESTE BUCLE NOS COLOCA EL PUNTERO EN EL PARAMETRO COMIENZO
' For A=0 To COMIENZO
' Set DOCUMENTO=VISTA.GETNEXTDOCUMENT(DOCUMENTO)
' Next
' While Not documento Is Nothing ESTO LO COMENTAMOS PORQUE COGE TODOS LOS DOCS
' EN SU LUGAR PONDREMOS UN BUCLE CON FOR
For A=1 To CUANTOS
Print"<tr class='cabecerRojo'>"
Print " <td style='padding:10px 0 0 10px'>"
Print " <a href='/inet/defenciu.nsf/modiQueja?openagent&clave="
Print documento.clave(0)
Print "'><img src='/graficos/botonBuscar.jpg' alt='ver registro' title='ver registro' style='border:0;'</a> </a>"
Print " </td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.clave(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.falta(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.apellidos(0)+documento.nombre(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.motivo(0)+"</td>"
Print " <td style='padding:10px 0 0 10px'>"+documento.estado(0)+"</td>"
Print "</tr>"
Print "<tr><td colspan='6' height='1' bgcolor='#000'></td></tr>"
Set documento=vista.GetNextDocument(documento)
'Wend ESTO SOBRA PORQUE ES DEL WHILE AHORA PONDREMOS NEXT
Next
Print "</tbody>"
Print"</table>"
For x=1 To paginas
y=x*cuantos
z=((x-1)*cuantos)+1
If z=comienzo Then Print "("
Print "<a href='/inet/Defenciu.nsf/adminquejasF?OPENAGENT&cuantos="+Ltrim(Str(cuantos))+"&comienzo="+Ltrim(Str(z))+"'>"
Print x
Print "</a>"
If z=comienzo Then
Print ")"
End If
If x<paginas Then Print ", "
Next
' Print {<a HREF="?OPENAGENT&CUANTOS=10&COMIENZO=}+Cstr(comienzo+cuantos)+{">1</a>}
End Sub
Un saludo
Leer más...
|
|