Parametros ASP --> Componente VB 6.0

Requiero enviar variables por referencia a un componente VB 6.0 desde una página ASP. Con el propósito de alterar su contenido en el componente, pero aún no he podido atinar con las instrucciones exactas.
Requiero enviar un argumento (parámetro por referencia) desde ASP a la función del componente VB 6.0, y que se me actualicen las variables en el ASP, lo estoy haciendo así:
En el ASP:
variable1 = "cadena corta"
variable2 = 1500
....
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs = objMeals.Actual (cstr(variable1),clng(variable2))
Response.Write ("El contenido de la variable1 es = ")
Response.Write variable1
Response.Write ("El contenido de la variable2 es = ")
Response.Write variable2
En el componente:
Public Function Actual(variable1 As String, variable2 As long) As ADODB.Recordset
variable1 = variable1 & " y algo más"
variable2 = variable2 * 2
....
End Function
Modifico el paso de argumentos con Cstr() por que es la forma en como me recibe los argumentos. Es decir que estoy trabajando parámetros por valor.
Cuando visualizo el contenido de las variables obtengo los datos con los que inicialice las mismas en el ASP.
En el ASP puedo trabajar con VBScript o JavaScript.
¿Dónde está mi error?
Por su atención muchas gracias.
Respuesta
1
Cuando trabajas con ASP no puedes usar los mismos conceptos que se utilizan para trabajar con VB y uno de esos conceptos que no funcionan es el paso de parámetros. No tienes paso de parámetros por referencia puesto que se utiliza el concepto "DESCONECTADO", por ejemplo, cuando abres un recordset este es desconectado, es decir, haces el query y el objeto ado te pasa un recordset entero, no es que lo guarde el y vayas usándolo, sino que te lo devuelve y punto.
En el caso de los parámetros entre una página ASP y un componente pasa exactamente lo mismo (ADO es un componente).
Lo que debes hacer es hacer que el componente te devuelva la variable transformada y la vuelves a asignar a la antigua y así tendrás una especie de paso por referencia (chapuza pero va).
Hola!
Estoy empezando a trabajar tanto con ASP como con VB. Por lo tanto a pesar de haber buscado información, continuo siendo lego en el tema.
Sí entendí bien, ¿lo qué usted plantea es manejar las variables tal como se hace con la "rs" de mi bosquejo de código?, sí no es así por favor me podría ilustrar con un ejemplo. Pues la inquietud surge no tanto de una necesidad real de este tipo de manipulación de variables sino de tratar de entender como sortear la simultaneidad de posibles cambios de valores en una situación hipotética.
Gracias por su atención.
Alafia
Lo que le propongo es lo siguiente:
Hacer una función que reciba un parámetro y devuelva otro de este estilo
function Mayusculas(cadena)
Mayusculas = Ucase(cadena)
end function
Entonces la encapsulas como una DLL ActiveX y la compilas. La registras en el MTS (es como más me gusta a mi personalmente aunque no use transacciones) Y la llamas así:
set obj = Server.CreateObject("<ProgID>")
cadena = "Hola me llamo JordiM"
cadena = obj.Mayusculas(cadena)
Ya has echo que la variable que pasas al componente recoja a su vez el valor devuelto por este (como si fuese por referencia)
En el desarrollo de componentes y sobre todo para internet esta es la filosofía que hay que tener puesto que la información pasa a ráfagas (cuando se pide) y no hay un contacto continuo con el proveedor de la información
Muchas gracias JordiM, por su valiosa ayuda. De verdad aclaré mi duda, pues previo a usted y con supuesta concatedra me habían informado que se podía hacer esto y agudizo mi confusión.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas