Parámetros

Hola Patrick!
Me disculpo por no haber dado antes los agradecimientos por su valiosa ayuda.
Hace días le había preguntado por devolver un recordset de un componente en VB 6.0 a una página ASP. Intente ejecutar la primera alternativa que me planteaba en la solución, pero resulte con mayores inquietudes:
Requiero enviar un argumento (parámetro por valor) desde ASP a la función del componente VB 6.0, y que se me actualicen las variables, 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.
En el ASP puedo trabajar con VBScript o JavaScript.
Dónde está mi error, por su atención muchas gracias.
1

1 Respuesta

3.275 pts.
Aun que sintácticamente y conceptualmente tu código no tiene error, la falencia se produce por querer hacer bien las cosas.
¿Qué significa esto?.
Cuando llamas a la función objMeals. Actual (cstr(variable1), clng(variable2)) estas pasando los valores de las variables (lo cual esta bien), pero como en tu función tu los recibes por referencia, lo que la función necesita es el "puntero" de la variable, es decir, la variable misma y no el valor.
Para lograr que funcione, cambia el llamado a la función por lo siguiente objMeals. Actual (variable1, variable2) .
Esto hará que te retorne los valores cambiados.
Olvide decir que lo que visualizo son los valores con los cuales inicialice las variables en el ASP.
Patrick, muchas gracias efectivamente me funciona este código que le he enviado, ya había consultado y me habían dicho imposible!, otros que debía hacer casting, etc, etc.
El variables se pasarán por referencia y no por valor.
Finalmente acláreme algo, lo había hecho antes como usted me ha recomendado, pero como no me funcionaba, -¿Por qué?- Tuve que utilizar Cstr() y aún lo sigo utilizando; ¿Sería quizá por que tengo tags html en mi página asp? ¿Será por qué defino que tipo de variables recibe el componente? Será por que defino el tipo de variable que tiene que retornar la función, ¿qué puede ser?
Le envío parte del código que presenta problema:
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY background=backgrnd.gif>
<P align=center><BR><FONT face="Book Antiqua" color=mediumblue size=4><STRONG>RESULTADO DE LA CONSULTA
DE SU SALDO</STRONG></FONT><BR></P>
<HR>
<%
cedcuenta = Request.QueryString("cedcuenta")
clave = Request.QueryString("clave")
tpcnt = Request.QueryString("tpcnt")
Set objMeals = Server.CreateObject("bancojd.consulta")
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs = objMeals.Consultar (cstr(cedcuenta),cstr(clave),cstr(tpcnt))
Response.Write ("<form name=cons2 action=historia.htm>")
Response.Write ("<TABLE align=center border=1 bgcolor=#cece9c>")
Response.Write ("<tr><th colspan=5 bgColor=#ceceff align=center> RELACION DE CUENTAS </th></tr>")
Response.Write ("<tr><td> Fecha Apertura </td><td> Tipo Cuenta </td> <td> Número de Cuenta </td> <td> Saldo Actual </td><td> Identificación </td> </tr>")
do while not rs.EOF
Response.Write ("<tr> <td>") .....
Response.Write ("</td></tr>")
rs.MoveNext
loop
Response.Write ("<TABLE align=center border=0>")
Response.Write ("<tr> <tr> </tr><tr> </tr></tr>")
Response.Write ("<tr> <tr> </tr><tr> </tr></tr>")
Response.Write ("<tr> <th colspan=4 align=center> <input name=submit type=submit value='ACEPTAR' TABINDEX = 10> </th></tr>")
Response.Write ("</form>")
Set objMeals = nothing
rs.Close
%>
La función la inicio así:
Option Explicit
Public Function Consultar(cedcuenta As String, clave As String, tpcnt As String) As ADODB.Recordset
Nuevamente gracias.
Cordial saludo,
Alafia.
Patrick, estoy muy agradecido por su ayuda, aún no tengo agilidad navegando en todoexpertos, por tal razón cierro esta pregunta y le formulo aparte otra que guarda relación con esta.
Reitero mis agradecimientos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas