Desplegar datos SQL de Agente en internet

Quiero desplegar información, que hago mediante un agente, un página predeterminada, como lo puedo realizar

1 Respuesta

Respuesta
1
Ruego que reformulices tu pregunta ya que no la llego a entender del todo, supongo que tiene algo que ver con agentes que reciben información mediante consultas SQL mediante códigos LotusScript, espero que me expliques mejor la pregunta para que te pueda ayudar.
Tengo un agente,
Que realiza un select, ese resultado lo quiero desplegar, pero no se con que comandos lo puedo desplegar en HTML
Supongo que quieres decir que el ResultSet obtenido de la SELECT quieres dejarlo en algún campo de algún formulario (para mi eso seria desplegar el resultado). Si es así confírmamelo y te respondo (pero hoy tengo prisa, sorry ) pero a la que tenga un ratillo te pongo hasta ejemplos.
Si es eso precisamente, si tienes ejemplos mucho mejor.
Gracias
Muchas gracias, nos va a servir de mucho toda esta información.
A ver, ejemplo:
Tenemos un formulario que le ponemos datos en varios campos y ejecutamos un botón que pasa unos parámetros por cabecera con los datos seleccionados de esos campos. (Vía web) entonces este llama a un agente que recoge estos parámetros de la cabecera, realiza una consulta SQL sobre una base de datos y luego abre un formulario dejando en campos esos resultados de la consulta:
Botón con fórmula VISUALIZAR RESULTADOS dentro del formulario
@URLOpen(@Subset(@DbName;-1)+
"/MI_FORM?OpenForm&Param1="+ESPAIS+"&Param2="+@Text(Data)+"&Param3="+@Text(OcupacioTriada)+"&Param4="+@Text(ZonaTriada)+"&Param5="+@Text(Data2))
Paso 5 parámetros con los campos elegidos del formulario
Entonces en la propiedad WebQueryOpen cargamos un Agente. Código
@Command([ToolsRunMacro]; "Nombre_Agente")
Ese agente tiene un código.
En el Initialize()
Sub Initialize
Dim session As New notesSession
Dim url$
Dim tempV As Variant
Dim ssrweb As notesdocument
'ssrweb conté tot el document del HORARI
Set ssrweb = session.documentContext
'La URL conté tota la capçalera de la crida
url = ssrweb.Query_String_Decoded(0)
' comprovar si tinc parametres passats per URL per comprovar si he de fer càlculs
tempV = Evaluate(| @contains( "| +url+ |"; "Param1=" ) |)
If tempV(0) Then
' si es cert vol dir que es reben els paràmetres i que cal emplenar el formulari
' Netejem tots els camps
ssrweb.Descripcions = ""
ssrweb.linia_1 = ""
ssrweb.linia_2 = ""
ssrweb.linia_3 = ""
ssrweb.linia_4 = ""
ssrweb.linia_5 = ""
ssrweb.Espais = ""
ssrweb.Zones = ""
ssrweb.Dates = ""
ssrweb.DiaSetmana2 = ""
' CRIDEM A LA FUNCIÓ D'EMPLENAR AMB EL FORMULARI!!!!!!!!!!
Call situacio ( ssrweb)
Else
' si es fals vol dir que només cal obrir el formulari buit = no fer res
ssrweb.Query_String = "No ens has passat paràmetres"
End If
Exit Sub
End Sub
Ahora después de limpiar todos los campos del formulario. Llamamos si hay parámetros a la función de una librería que se llama Call situacio ( ssrweb)
Acuerdate que para Linkar librerias debes usar en la parte Options
Option Public
Option Declare
Use "Libreria9a2_2"
para poder hacer llamadas
Entonces en esa librería regoges los parámetros de los campos que has pasado por la cabecera
Un código de ejemplo que recoja campos y cree bucles con llamadas a funciones de cálculos seria el siguiente:
'Parametres:
' source: uidoc
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim view2 As NotesView
Dim view3 As NotesView
Dim vc3 As NotesViewEntryCollection
Dim vc2 As NotesViewEntryCollection
Dim vc As NotesViewEntryCollection
Dim entryR3 As NotesViewEntry
Dim entryR2 As NotesViewEntry
Dim entryR As NotesViewEntry
Dim data_dia As Variant
Dim data_dia2 As Variant
Dim Zona As String
Dim Espai As String
Dim EspaiV As Variant
Dim Consulta(2) As Variant
Dim Consulta2(1) As Variant
Dim CONTADOR_ESPAIS As Integer
Dim NOMDIA As String
Dim IsIn As Variant
Dim nn As Integer
Dim numEspais As Integer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'AGAFEM LA DATA INICI I LA DATA FINAL I COMPROVEM ERRORS DE RANG
data_dia = Datevalue(ssrec.data(0)) ' DIA ESCOLLIT EN EL FORM HORARIS
data_dia2 = Datevalue(ssrec.data2(0)) ' DIA ESCOLLIT EN EL FORM HORARIS
'Comprovem que les dates estiguin bé
If Cdbl(data_dia2) < Cdbl(data_dia) Then
data_dia2 = data_dia
End If
'Fem que data_dia2 tingui el seu valor + 1 per controlar les voltes del bucle
data_dia2= Cdat(Datenumber(Year(data_dia2),Month(data_dia2),Day(data_dia2)+1))
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Contem els espais que sortiràn al formulari --> Si al final Espai = 1 i és múltiple --> ERROR A LES DADES
CONTADOR_ESPAIS=0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Agafem les vistes on farem les consultes
Set db=session.CurrentDatabase
Set view = db.GetView("$ES4")
Set view2=db.GetView("$ESPAIS4")
Set view3=db.GetView("$ESS")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'agafem la zona
Zona = Cstr(ssrec.idZona(0))
'condició d'error
ssrec.Elementos_de_la_linia = -1
' dividim el camp id en un array d'espais triats
EspaiV = Explode(ssrec.id(0),":",False)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'bucle per el rang de dies
While( Cdbl(data_dia) <> Cdbl(data_dia2) )
'agafem el nom del día de la setmana que toca escriure
NOMDIA = dia_setmana(Cint(Weekday(Cdat(data_dia))))
If Zona <>"TOTS" Then
'################################################
'### S'ha demanat d'una Zones i tots els espais seleccionats ###
'################################################
'CONTADOR DE ESPAIS
nn=0
' AGAFEM EL CAMP QUE ENS DIU LA QUANTITAT D'ESPAIS TRIATS
numEspais = Cint(ssrec.EspaisTriats(0))
' CONSULTEM PER CADA ESPAI
While ( nn <> numEspais)
Set vc2 = view2.GetAllEntriesByKey( Cstr(EspaiV(nn)), True )
Set entryR2 = vc2.GetFirstEntry( )
Espai = Cstr(entryR2.columnValues(1) )
'CREEM LA CONSULTA
Consulta(0) = Cdat(data_dia)
Consulta(1) = Cstr(Zona)
Consulta(2) = Cstr(Espai)
'AGAFEM TOTS ELS REGISTRES DE LA DATA INDICADA, LA ZONA I L'ESPAI INDICAT
Set vc = view.GetAllEntriesByKey( Consulta, True )
Set entryR = vc.GetFirstEntry( )
If Not(entryR Is Nothing) Then
'GUARDEM LLISTAT D'ESPAIS AL CAMP ESPAIS PER PINTAR EL SEU NOM EN EL FORM
Call AfegirValor(ssrec, "espais", Espai)
Call AfegirValor(ssrec, "zones", Zona)
Call AfegirValor(ssrec, "dates", Cstr(data_dia))
Call AfegirValor(ssrec, "DiaSetmana2", NOMDIA)
'contem que hem trobat dades d'un espai mes
CONTADOR_ESPAIS=CONTADOR_ESPAIS+1
' Calcular les 4 linies amb l'info dels esdeveniments...
'Cogemos la primera entrada del índice
Set entryR = vc.GetFirstEntry( )
Call calcular_situacio_dia( 1, data_dia, ssrec, entryR, vc , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc.GetFirstEntry( )
Call calcular_situacio_dia( 2, data_dia, ssrec, entryR, vc , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc.GetFirstEntry( )
Call calcular_situacio_dia( 3, data_dia, ssrec, entryR, vc , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc.GetFirstEntry( )
Call calcular_situacio_dia( 4, data_dia, ssrec, entryR, vc , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc.GetFirstEntry( )
Call calcular_situacio_dia( 5, data_dia, ssrec, entryR, vc , Espai)
End If
nn = nn+1
Wend
Else
'########################################
'### S'ha triat totes les Zones i alguns dels espais ###
'########################################
'CONTADOR DE ESPAIS
nn=0
' AGAFEM EL CAMP QUE ENS DIU LA QUANTITAT D'ESPAIS TRIATS
numEspais = Cint(ssrec.EspaisTriats(0))
' CONSULTEM PER CADA ESPAI
While ( nn <> numEspais)
Set vc2 = view2.GetAllEntriesByKey( Cstr(EspaiV(nn)), True )
Set entryR2 = vc2.GetFirstEntry( )
Espai = Cstr(entryR2.columnValues(1) )
'CREEM LA CONSULTA
Consulta2(0) = Cdat(data_dia)
Consulta2(1) = Cstr(Espai)
'AGAFEM TOTS ELS REGISTRES DE LA DATA INDICADA, LA ZONA I L'ESPAI INDICAT
Set vc3 = view3.GetAllEntriesByKey( Consulta2, True )
Set entryR = vc3.GetFirstEntry( )
If Not(entryR Is Nothing) Then
'GUARDEM LLISTAT D'ESPAIS AL CAMP ESPAIS PER PINTAR EL SEU NOM EN EL FORM
Zona = Cstr(entryR.columnValues(2) )
Call AfegirValor(ssrec, "espais", Espai)
Call AfegirValor(ssrec, "zones", Zona)
Call AfegirValor(ssrec, "dates", Cstr(data_dia))
Call AfegirValor(ssrec, "DiaSetmana2", NOMDIA)
'contem que hem trobat dades d'un espai mes
CONTADOR_ESPAIS=CONTADOR_ESPAIS+1
' Calcular les 4 linies amb l'info dels esdeveniments...
'Cogemos la primera entrada del índice
Set entryR = vc3.GetFirstEntry( )
Call calcular_situacio_dia( 1, data_dia, ssrec, entryR, vc3 , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc3.GetFirstEntry( )
Call calcular_situacio_dia( 2, data_dia, ssrec, entryR, vc3 , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc3.GetFirstEntry( )
Call calcular_situacio_dia( 3, data_dia, ssrec, entryR, vc3 , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc3.GetFirstEntry( )
Call calcular_situacio_dia( 4, data_dia, ssrec, entryR, vc3 , Espai)
'Cogemos la primera entrada del índice
Set entryR = vc3.GetFirstEntry( )
Call calcular_situacio_dia( 5, data_dia, ssrec, entryR, vc3 , Espai)
End If
nn = nn+1
Wend
End If
data_dia= Cdat(Datenumber(Year(data_dia),Month(data_dia),Day(data_dia)+1))
'AGAFEM LA ZONA
Zona = Cstr(ssrec.idZona(0))
Wend
'Colocamos en el campo elementos de la linia, los elementos que va a tener
ssrec.Elementos_de_la_linia = CONTADOR_ESPAIS
End Sub
Vigila que Explode e Implode en la version 5 de Notes no están implementadas las funciones, pero yo te las paso ;)
Function Explode(fullString As String, separator As String, empties As Integer) As Variant
Dim fullStringLen As Integer
Dim lastPosition As Integer
Dim position As Integer
Dim x As Integer
Dim tmpArray() As String
If empties = False Then fullString = Trim$(fullString)
If separator = "" Then separator = " "
fullStringLen = Len(fullString)
lastPosition = 1
position = Instr(fullString, separator)
If position > 0 Then
x = 0
While position > 0
x = x+1
Redim Preserve tmpArray(x)
' The next entry in the array is going to be the part of the string from the
' end of the previous part to the start of the new part.
tmpArray(x-1) = Mid$(fullString, lastPosition, position - lastPosition)
If empties = False Then
' If the user does not want empties and there are consecutive separators,
' skip over the 2nd, 3rd, etc. instance of the separator.
While Mid$(fullString, position+Len(separator), Len(separator)) _
= Mid$(fullString, position, Len(separator))
position = Instr(position+Len(separator), fullString, separator)
Wend
End If
lastPosition = position + Len(separator)
position = Instr(position+Len(separator), fullString, separator)
Wend
tmpArray(x) = Mid$(fullString, lastPosition) ' Save everything after the last separator
If empties = False And Trim(tmpArray(x)) = "" Then
Redim Preserve tmpArray(x-1) ' Eliminate the last one if it's empty
End If
Else
Redim tmpArray(0)
tmpArray(0) = fullString
End If
Explode = tmpArray
End Function
Function Implode(anArray As Variant, concatenator As String) As String
Dim tmpString As String
If Not Isarray(anArray) Then
tmpString = anArray
Else
If Ubound(anArray) = Lbound(anArray) Then
tmpString = Trim(anArray(Lbound(anArray)))
Else
Forall items In anArray
tmpString = tmpString & items & concatenator
End Forall
' The concatenator was always added; the last one needs to be removed
tmpString = Left(tmpString, Len(tmpString) - Len(concatenator))
End If
End If
Implode = tmpString
End Function
Entonces después de hacer los cálculos, rellenas en el formulario los campos que quieras como en el ejemplo que te he puesto.
Para hacer consultas SQL te pongo otro ejemplo.
Uselsx "*LSXODBC"
Sub Initialize
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim firstName As String
Dim lastName As String
Dim msg As String
Set qry.Connection = con
Set result.Query = qry
con.ConnectTo("ATDB")
qry.SQL = "SELECT * FROM STUDENTS"
result.Execute
msg = "Student names:" & Chr(10)
If result.IsResultSetAvailable Then
Do
result.NextRow
firstName = result.GetValue("FIRSTNAME", _
firstName)
lastName = result.GetValue("LASTNAME", _
lastName)
msg = msg & Chr(10) & firstName & " " & _
lastName
Loop Until result.IsEndOfData
Messagebox msg,, "Student Names"
result.Close(DB_CLOSE)
Else
Messagebox "Cannot get result set for STUDENTS"
Exit Sub
End If
con.Disconnect
End Sub
Si todavía no te sales acotame donde tienes los problemas.
Se me ha olvidado ponerte como se meten los valores recibidos en los campos del formulario.
Es la función Poner_Valor:
Sub AfegirValor( doc As NotesDocument, item As String, valor As String )
Dim nitem As NotesItem
Set nitem = doc.GetFirstItem( item )
Call nitem.AppendToTextList( valor )
End Sub
Por ejemplo, se puede hacer más a saco pero esta esta muy bien.
También se me ha olvidado comentarte que para activar agentes vía web necesitas hacerlo desde el Lotus Administrator porque por defecto no deja, tienes que dejar hacerlo a ciertos usuarios o Grupos.
Ta luego!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas