Estoy diseñando una página web de mi empresa en ASP y tengo problemas con ciertos registros.

Tengo un pequeño problema, una consulta compleja me esta dando problemas, resulta que de la página uno yo me traigo mediante un querystring dos datos que son el código de empresa y código de rama, eso se los paso a la página dos y luego hago un select basado en los registros que tengan el cod de empresa y de rama que les pase de la página anterior, ese SELECT es una consulta compleja, de una tabla PRODUCTO me traigo el código de rama, código de empresa., código de producto, nombre del producto, de la tabla EMPRESA me traigo el nombre de la empresa, de la tabla RAMA traigo nombre de la rama y de la tabla TIPO nombre del tipo de producto. Esta consulta la hice en access y luego solo copie y pegue el código, la consulta queda así:
Select= "SELECT producto.cod_rama, tipo.cod_tipo, tipo.nomb_tipo, producto.cod_empresa, producto.cod_producto, producto.nomb_producto, empresa.nomb_empresa, rama.nomb_rama
FROM tipo INNER JOIN ((rama INNER JOIN empresa ON rama.cod_rama = empresa.cod_rama) INNER JOIN producto ON rama.cod_rama = producto.cod_rama) ON tipo.cod_tipo = producto.cod_tipo
WHERE (((producto.cod_rama)=2) AND ((producto.cod_empresa)=1));"
Así, la consulta funciona de maravilla.
El 2 y el 1 que ven en la ultima linea de la consulta es porque quería probar un criterio de búsqueda y escogí la rama # 2 y la empresa con el código #1, hasta ahí bien, pero lo que yo quiero es sustituir ese 2 y ese 1 por variables:
var_cod_rama = request.QueryString("producto.cod_rama")
var_cod_empresa = request.QueryString("producto.cod_empresa")
entonces la consulta me queda:
Select= "SELECT producto.cod_rama, tipo.cod_tipo, tipo.nomb_tipo, producto.cod_empresa, producto.cod_producto, producto.nomb_producto, empresa.nomb_empresa, rama.nomb_rama
FROM tipo INNER JOIN ((rama INNER JOIN empresa ON rama.cod_rama = empresa.cod_rama) INNER JOIN producto ON rama.cod_rama = producto.cod_rama) ON tipo.cod_tipo = producto.cod_tipo
WHERE (((producto.cod_rama)="&var_cod_rama&") AND ((producto.cod_empresa)="&var_cod_empresa&"));"
Pero ahí me tira un error que dice que hay un ) de más en la consulta, ya he probado de todo y aun sigue dando problemas, tienen idea de que pueda ser

2 respuestas

Respuesta
1
Probá copiando y pegando lo siguiente (te conviene pegarlo primero en el Notepad y luego copiarlo desde ahí para que tu editor lo tome como texto plano):
Select = "SELECT producto.cod_rama, tipo.cod_tipo, tipo.nomb_tipo, producto.cod_empresa, producto.cod_producto, producto.nomb_producto, empresa.nomb_empresa, rama.nomb_rama FROM tipo INNER JOIN ((rama INNER JOIN empresa ON rama.cod_rama = empresa.cod_rama) INNER JOIN producto ON rama.cod_rama = producto.cod_rama) ON tipo.cod_tipo = producto.cod_tipo WHERE producto.cod_rama=" & var_cod_rama & " AND producto.cod_empresa=" & var_cod_empresa & ";"
Eso ya lo había también probado, pero mira lo que salio:
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'producto.cod_rama= AND producto.cod_empresa='.
/swapp/Copy of administracion/borrar_producto2.asp, line 38
Me estoy volviendo locccccoooooooo!
Para probarlo yo hice lo siguiente:
var_cod_empresa = "1"
var_cod_rama = "2"
Select = "SELECT producto.cod_rama, tipo.cod_tipo, tipo.nomb_tipo, producto.cod_empresa, producto.cod_producto, producto.nomb_producto, empresa.nomb_empresa, rama.nomb_rama FROM tipo INNER JOIN ((rama INNER JOIN empresa ON rama.cod_rama = empresa.cod_rama) INNER JOIN producto ON rama.cod_rama = producto.cod_rama) ON tipo.cod_tipo = producto.cod_tipo WHERE producto.cod_rama=" & var_cod_rama & " AND producto.cod_empresa=" & var_cod_empresa & ";"
Por lo que vos me decís, no está tomándote los valores que vienen por parámetro. Probá con lo que te escribí arriba (fíjate de poner un código de rama y un código de empresa que existan en la BD) y fíjate si anda la consulta. Si anda es que estás tomando mal los valores que vienen por QueryString. Si no anda, volveme a preguntar.
Respuesta
1
No veo problemas en tu nueva consulta, comprueba que no le estés pasando un blanco o un nulo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas