Componentes

Necesito crear un componente en VB 6.0 que consulte una base de datos en access y me retorne el recordset a la página ASP para manipular la información. Mi dificultad está en que cuando envío parámetros desde ASP al Componente VB todo el procesamiento se me ejecuta en el componente, me sirve saber como se reciben valores o parámetros en la página ASP desde el componente (la respuesta del componente a la página asp), cualquier ejemplo de esto, gracias por la colaboración.

1 respuesta

Respuesta
1
Alafia,
Para poder entregar un recordset a asp existen un par de formas de hacerlo. La primera es utilizando un parámetro dentro de tu función que reciba un recordset, lo pueble y termine. Entonces cuando lees la variable desde al asp, después de llamar a la función, esta tiene lo que andas buscando. COmo yo se que no quedo muy claro, te muestro un ejemplo:
public function leeRs(....., byRef objRs as adodb.recordset, .....)
.....
puede ser neceserio hacer : set objRs = new adodb.recordset
objrs.open strSql, ......
....
end function
en el asp, la situación sería :
dim objVB, objRs
set objVB = server.createobject("micomponente.miclase")
call objVB.leeRs(....., objRs,...)
while not objrs.eof
.....
A mi, particularmente no me gusta mucho esto, y me inclinaría por una función que el retorno sea un recordset, del estilo
public function leeRs(..........) as adodb.recordset
dim objRs as ADODB.Recordset
set objRs = new ADODB.Recordset
....
objRs.open ....
***
end function
y luego de realizar el proceso, típico en tu funcion (en los ***) hacer
set leeRs = objRs 'copias el puntero del recordset a esta variable
set oBjRs = nothing ' matas el puntero, pero no la información ya que esta fue asignada a leeRs
ahora, en el ASP, la situación es como sigue :
dim objVB, objRs
set objVB = server.createobject("micomponente.miclase")
set objRs = objVB.leeRs(........)
while not objrs.eof
...
Es interesante que investigues en la teoría de los recordsets desconectados, en especial para la función que estás construyendo. Podríamos revisaarlo ahora, pero se extendería demasiado. Prefiero que lo comentemos cuando estimes conveniente y no darte una cháchara muy larga.
Cualquier cosa, me preguntas.
Patrick

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas