Foros del Web » Programando para Internet » ASP Clásico »

PROBLEMA "Error no especificado" EN ASP

Estas en el tema de PROBLEMA "Error no especificado" EN ASP en el foro de ASP Clásico en Foros del Web. Buenas amigos de foros del web..tengo un tremendo problema y no se como solucionarlo....Necesito hacer 2 selects dependientes...(ya se que es un tema muy tratado ...
  #1 (permalink)  
Antiguo 07/04/2008, 21:00
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 17 años, 7 meses
Puntos: 0
PROBLEMA "Error no especificado" EN ASP

Buenas amigos de foros del web..tengo un tremendo problema y no se como solucionarlo....Necesito hacer 2 selects dependientes...(ya se que es un tema muy tratado en el foro) pero lo que necesito es que en vez de que sea el tipico que da como resultado un IdPais y el nombre de la provincia, necesito que me diera por resultado el nombre del pais y el nombre de la provincia .....Resulta que modifique un codigo y me aparece este error :
Cita:
Provider (0x80004005)
Error no especificado
/bodega/selects_dependientes.asp, línea 5
este es el codigo de mi pagina en ASP :

Código HTML:
<form name=formulario method ="post" action =receive.asp>
PAÍS: <select name=Pais onChange="location.href('selects_dependientes.asp?Pais=' + formulario.Pais.options[formulario.Pais.selectedIndex].value)">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ssdd.mdb"))

SQL_pais="select * from paises order by pais asc"
set RS_pais=createobject("ADODB.Recordset")
RS_pais.open SQL_pais,conn
do while not RS_pais.eof
pais = RS_pais("pais")

p = request("pais")

'


if p <> "" then

	if p = pais then
	response.write "<option value='"&Pais&"' selected>"&pais&"</option>"
	elseif p <> pais then
	response.write "<option value='"&Pais&"'>"&pais&"</option>"
	end if
else
response.write "<option value='"&Pais&"'>"&pais&"</option>"
end if

RS_pais.movenext
	loop
RS_pais.close
%>
</select>
<%
if request.querystring("Pais") <> "" then %>
PROVINCIA: 
<select name=ubicacion>
<%
SQL_prov="select * from provincias where pais="&request.querystring("Pais")&" order by provincia asc"
set RS_prov=createobject("ADODB.Recordset")
RS_prov.open SQL_prov,conn
do while not RS_prov.eof

pais = request.querystring("pais")
provincia = RS_prov("provincia")
%>
<option value=" <%=provincia%>"><%=provincia%></option>
<%
RS_prov.movenext
	loop
RS_prov.close
%>
</select><% end if %>

<INPUT TYPE="submit"></form> 

este es el codigo de la pagina "original" :

Código HTML:
<form name=formulario method ="post" action =receive.asp>
PAÍS: <select name=idPais onChange="location.href('selects_dependientes.asp?idPais=' + formulario.idPais.options[formulario.idPais.selectedIndex].value)">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ssdd.mdb"))

SQL_pais="select * from paises order by pais asc"
set RS_pais=createobject("ADODB.Recordset")
RS_pais.open SQL_pais,conn
do while not RS_pais.eof
pais = RS_pais("pais")
idPais = RS_pais("idPais")
p = request("pais")

'


if p <> "" then

	if p = pais then
	response.write "<option value='"&idPais&"&pais="&pais&"' selected>"&pais&"</option>"
	elseif p <> pais then
	response.write "<option value='"&idPais&"&pais="&pais&"'>"&pais&"</option>"
	end if
else
response.write "<option value='"&idPais&"&pais="&pais&"'>"&pais&"</option>"
end if

RS_pais.movenext
	loop
RS_pais.close
%>
</select>
<%
if request.querystring("idPais") <> "" then %>
PROVINCIA: 
<select name=ubicacion>
<%
SQL_prov="select * from provincias where pais="&request.querystring("idPais")&" order by provincia asc"
set RS_prov=createobject("ADODB.Recordset")
RS_prov.open SQL_prov,conn
do while not RS_prov.eof

pais = request.querystring("pais")
provincia = RS_prov("provincia")
%>
<option value=" <%=provincia%>"><%=provincia%></option>
<%
RS_prov.movenext
	loop
RS_prov.close
%>
</select><% end if %>

<INPUT TYPE="submit"></form> 


no se que sera....por favor necesito saber como corregir el primer codigo o si no...la manera de que el formulario me mande solo el nombre del pais y el nombre de la ciudad...

De antemano muchas gracias....

Aps...cuando lo estaba recien probando...cuando mandaba los resultados me aparecia esto :


Valores enviados
IdCategoria = 2&pais=España


IdProducto = Barcelona


no se como eliminar eso con rojo sin que tenga problemas el formulario

Última edición por darkmcloud; 07/04/2008 a las 23:49
  #2 (permalink)  
Antiguo 07/04/2008, 22:07
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: PROBLEMA "Error no especificado" EN ASP

Tu codigo es un poco confuso... trata de aplicar un cierto orden, sino se transforma en un caos, y su lectura se complica muchisimo...

Yo lo que hice fue volver a escribir tu codigo de una forma mas estilizada y corregi algunas cosas que me parecian que estaban mal.

No puede probarlo porque no tengo tu base de datos y eso... pero tendria que andar.

Código HTML:
<%
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ssdd.mdb"))
SQL_pais = "SELECT * FROM paises ORDER BY pais ASC" 
Set RS_pais = CreateObject("ADODB.Recordset")
%>

<form name="formulario" method="post" action="receive.asp">
PAÍS: <select name="pais" onChange="location.href('selects_dependientes.asp?pais=' + document.forms['formulario'].pais.options[document.forms['formulario'].pais.selectedIndex].value)"> 
<% 
Do While NOT RS_pais.EOF
	If Request.QueryString("pais") = RS_pais("pais") Then
		Response.Write("<option value='" & RS_pais("pais") & "' selected>" & RS_pais("pais") & "</option>")
	Else
		Response.Write("<option value='" & RS_pais("pais") & "'>" & RS_pais("pais") & "</option>")
	End If
	RS_pais.MoveNext
Loop
RS_pais.Close
%> 
</select>

<% 
If Request.QueryString("pais") <> "" Then
	SQL_prov = "SELECT * FROM provincias WHERE pais=" & Request.QueryString("pais") & " ORDER BY provincia ASC"
	Set RS_prov = CreateObject("ADODB.Recordset")
	RS_prov.Open SQL_prov,conn
%> 
PROVINCIA:  
<select name="ubicacion"> 
<% 
	Do While NOT RS_prov.EOF
		Response.Write("<option value='" & RS_prov("provincia") & "' selected>" & RS_prov("provincia") & "</option>")
		RS_prov.MoveNext
	Loop
	RS_prov.Close
%> 
</select>
<%
End If
%> 
<INPUT TYPE="submit">
</form>  
</body>
</html> 
Espero que te sirva, si te tira algun error, por favor comenta en que linea es.

Aunque yo te sugiero que utilices JavaScript para cargar de una sola vez todas las variables en el select y no tener que hacer el "refresh"

Si te interesa esa alternativa hechale una mirada a este post:

http://www.forosdelweb.com/f15/problema-con-combos-anidados-569614/#post2344729

Saludos!
  #3 (permalink)  
Antiguo 07/04/2008, 22:13
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: PROBLEMA "Error no especificado" EN ASP

Ahh, y por cierto... siempre es mejor manejar las opciones por su id, no su texto, ya que el id sale de un autonumerico y jamas abran duplicados, con el texto uno nunca sabe.
  #4 (permalink)  
Antiguo 07/04/2008, 23:25
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: PROBLEMA "Error no especificado" EN ASP

Primero que todo muchas gracias por responderme......pero si hicera eso ultimo que tu me dices.....entonces como tendria que "convertir" ese id a texto para insertarlo en la bdd ??
de hecho por ese problema que no se como resolver es que quiero manejar las opciones por su texto y no x su Id...pero si tu me dijeras como podria "convertirlos" te lo agradeceria mucho

De antemano muchas gracias
  #5 (permalink)  
Antiguo 08/04/2008, 09:50
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: PROBLEMA "Error no especificado" EN ASP

Es simple, presta atencion:

En una tabla "tblpaises" tienes, por ejemplo estos dos campos:

ID_PAIS y NOMBRE_PAIS

Donde id pais es autonumerico, y nombre pais (valga la redundancia) es el nombre del pais.

Cuando tu abres un recordset "rsPaises", abres los dos campos, y cuando te mueves hacia arriba y hacia abajo en los registros, lo haces en los dos a la vez, es como si bajaras de reglon en la tabla.
Por ejemplo, si estas en el registro numero 10 y escribes rsPaises("ID_PAIS") te tira el autonumerico 10, y si pones rsPaises("NOMBRE_PAIS") te tira el nombre que le corresponde, no el de arriba ni el de abajo.

Teniendo eso en cuenta puedes por ejemplo abrir un recordset estableciendo como condicion que el pais tenga el id 5 por ejemplo:

SELECT * FROM tblPaises WHERE ID_PAIS = '5'

O que tenga un nombre de pais especifico:

SELECT * FROM tblPaises WHERE NOMBRE_PAIS = 'Argentina'

-----

Una vez que entiendas eso podras pasar a situaciones mas complejas, como por ejemplo tenes una tabla donde tienes los usuarios, y en otra tienes los paises.

Entonces la tabla "tblusuarios" seria asi:

NOMBRE_DE_USUARIO / NOMBRE_REAL / PAIS
username / fulanito / 5

y en la tabla "tblPaises":

ID_PAIS / NOMBRE_PAIS
5 / Argentina

Entonces tu quieres abrir la tabla tblusuarios y que cuando consultes el pais en vez de mostrar 5 que te muestre cual es su nombre.

Esto se hace abriendo las dos tablas a la vez con una funcion en SQL que se llama Inner Join (que puedes buscar en Google y salen muuuchos ejemplos)

Yo tube la misma duda, mira mi post quizas saques lo que necesitas de ahi.

Espero haberte aclarado un poco el panorama.

Saludos!

Última edición por i_e_s27; 08/04/2008 a las 09:58
  #6 (permalink)  
Antiguo 08/04/2008, 11:16
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: PROBLEMA "Error no especificado" EN ASP

creo entenderte compadre....pero como puedo lograr que no me aparezcan los resultados asi :

Valores enviados
Pais = 2&pais=España

Ciudad = Barcelona

no se como quitar eso que esta con rojo sin que el codigo no funcione, porque se que se necesita el idpais para buscar en el segundo select la ciudad que le corresponde, pero necesito que el resultado que envie el formulario sea solo el nombre del pais y no el idpais....pero no se como hacerlo...

De Antemano Muchas Gracias
  #7 (permalink)  
Antiguo 08/04/2008, 11:35
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: PROBLEMA "Error no especificado" EN ASP

Sigo insistiendo... el nombre del pais es solo para que el usuario lo vea, tu adentro de tu aplicacion vas a trabajar con el id, y nada mas que el id.
Y cuando necesites mostrar el pais con id 5 buscas en la tabla a que pais pertenece el id 5.

Se entiende lo que yo quiero decirte? te lo explico de otra forma:

Cuando tu envias el pais Argentina, que tiene el id 5, a tu pagina que recoge los datos del formulario te va a quedar:

Request.Form("pais") = idpais <---- va a valer 5

buscas en tu base de datos a que pais le corresponde el 5, y lo almacenas en una variable.

"SELECT * FROM tblPaises WHERE ID_PAIS =" & idpais

nombrepais = rsPais("ID_PAIS")

Entendes?? Es solo aplicar un poco de logica.


Pero no se como lograr eso que tu pides, quizas poniendo los dos valores, con una coma de por medio y cuando lleguen los datos a la pagina que los recibe le haces un split y sacas cual es el id y cual es el texto.

Saludos!
  #8 (permalink)  
Antiguo 08/04/2008, 12:01
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: PROBLEMA "Error no especificado" EN ASP

Mcloud... hace tiempo que no aparecias...

puedes poner el codigo de envio de informacion para verificar si estas agregando dos veces la verificacion de datos o si tienes un campo extra

NOTA: no la que RECIBE, sino la que ENVIA los datos
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 09/04/2008, 21:56
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: PROBLEMA "Error no especificado" EN ASP

Cita:
Iniciado por i_e_s27 Ver Mensaje
Sigo insistiendo... el nombre del pais es solo para que el usuario lo vea, tu adentro de tu aplicacion vas a trabajar con el id, y nada mas que el id.
Y cuando necesites mostrar el pais con id 5 buscas en la tabla a que pais pertenece el id 5.

Se entiende lo que yo quiero decirte? te lo explico de otra forma:

Cuando tu envias el pais Argentina, que tiene el id 5, a tu pagina que recoge los datos del formulario te va a quedar:

Request.Form("pais") = idpais <---- va a valer 5

buscas en tu base de datos a que pais le corresponde el 5, y lo almacenas en una variable.

"SELECT * FROM tblPaises WHERE ID_PAIS =" & idpais

nombrepais = rsPais("ID_PAIS")

Entendes?? Es solo aplicar un poco de logica.



Saludos!
Muchas Gracias por tu Respuesta, hice lo que tu me dijiste y me resulto !!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:32.