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

Duda con consulta SQL

Estas en el tema de Duda con consulta SQL en el foro de ASP Clásico en Foros del Web. Hola amigos, estoy con una cosilla que no me acaba de "salir" Vereis, lo típico, en una page haga una consulta a la bd, luego ...
  #1 (permalink)  
Antiguo 28/04/2004, 13:06
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
Duda con consulta SQL

Hola amigos, estoy con una cosilla que no me acaba de "salir"

Vereis, lo típico, en una page haga una consulta a la bd, luego paso el argumento IdTema a otra page al estilo de...

Código:
<a href="list-subtemas.asp?IdTema=<%=registros("IdTema")%>"><%=registros("Tema")%>
		 </a>
En la otra page recogo el argumento con un request.querystring y lo meto en una variable llamada IdTema, abro la bd y hago la consulta, pero ignoro que es lo que falla con la sql

Código:
Set Registros="SELECT * FROM TABLA WHERE TABLA.IdTema=" & IdTema
Bueno, a ver si puedo dormir un poco esta noche y mañana levantarme mejor, por que tengo un dolor de cabeza
__________________

***Aprendiz de todo y maestro de nada***
  #2 (permalink)  
Antiguo 28/04/2004, 14:33
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
ke tal epa2

si nos arrojas el error o por ultimo le haces un response.write a IdTema podriamos saber hacia donde dirigir los dardos

saludos
  #3 (permalink)  
Antiguo 29/04/2004, 03:52
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
Hola¡¡¡, vaya fallo el no poner el error, vamos a ver....

la page que recoge el argumento

Código:
<% option explicit %>
<%
If Request.QueryString("IdTema")<>"" Then
		dim Idtema, Registros
		IdTema=Request.QueryString("IdTema")
	
		'Aquí la conexion a la bd y el Recordset, etc, etc,
 		
		Set Registros="SELECT * FROM Tabla WHERE Tabla.IdTema=" & IdTema 
	
End IF
	
%>
Bueno, el error en la page me lo da en la misma línea de Set Registros, pues me dice que se requiere un objeto

Código:
Error de Microsoft VBScript en tiempo de ejecución (0x800A01A8)
Se requiere un objeto: '[string: "SELECT * FROM Tabla"]'
Bueno, sigo mirando a ver donde está el fallo.
__________________

***Aprendiz de todo y maestro de nada***
  #4 (permalink)  
Antiguo 29/04/2004, 14:42
 
Fecha de Ingreso: abril-2004
Mensajes: 1
Antigüedad: 21 años
Puntos: 0
Debes de hacer varias cosas aparte de la conexion
Declarar la variable regitros como Adodb.Recordset algo como esto:

Dim Rst
Dim Cnn
Dim Cmd

Set Cnn = Server.CreateObject("ADODB.Connection")
Set Rst = Server.CreateObject("ADODB.Recordset")
Set Cmd = Server.CreateObject("ADODB.Command")

Cnn.ConnectionString = "tu conexion"
Cnn.Open
Cmd.ActiveConnection = Cnn
Cmd.CommandText = "SELECT * FROM TABLA WHERE IdTema = " + Cstr(IdTema)

Set Rst = Cmd.Execute
  #5 (permalink)  
Antiguo 30/04/2004, 04:14
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
Hola Francisco, gracias por responder

¡¡¡voy a probar como me dices!!!
__________________

***Aprendiz de todo y maestro de nada***
  #6 (permalink)  
Antiguo 30/04/2004, 08:08
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
¡¡Francisco!!!

ya me salió, muchas gracias por tu ayuda, de verdad

era precisamente eso.

Gracias
__________________

***Aprendiz de todo y maestro de nada***
  #7 (permalink)  
Antiguo 30/04/2004, 08:59
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
me siento un

perdona por mi torpeza, (en verdad, con la sintaxis me lio). Estoy intentando pulir un poco
la sql para que me un order by pero no doy pie con bola...

tipo de error de sintaxis, falta un operador en la expresión de consulta
'IdTema= 1 ORDER BY (IdSubtema))'

Y la sql que utilizo es esta....
Código:
	Cmd.CommandText = "SELECT * FROM Tabla  WHERE IdTema = " + Cstr(IdTema)  + " (ORDER BY (IdSubtema));"
__________________

***Aprendiz de todo y maestro de nada***
  #8 (permalink)  
Antiguo 30/04/2004, 09:33
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
Cmd.CommandText = "SELECT * FROM Tabla WHERE IdTema = '" + Cstr(IdTema) + "' ORDER BY IdSubtema"

saludos
  #9 (permalink)  
Antiguo 30/04/2004, 10:05
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
Gracias por responder, pero salgo de malaga para entrar en malagón.

ahora la consulta me va, pero en la siguiente línea me da error,

al ejecutar la consulta y meterla en el recorset
Código:
Set Rst = Cmd.Execute
me da el error, me dice que no coinciden los tipos de datos en la expresión de criterios.


Vamos a ver, hago la consulta por IdTema que es un número pero que se pasa a cadena de texto con el Cstr(IdTema) y luego lo quiero ordenar por IdSubtema que es un número en la bd

¿tengo que pasar también en la cadena de consulta sql el Order by IdSubtema a texto tambien???
__________________

***Aprendiz de todo y maestro de nada***

Última edición por epa2; 30/04/2004 a las 10:08
  #10 (permalink)  
Antiguo 30/04/2004, 15:41
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
nop...no deberias ya que estas ordenando por un campo de la b de datos que ya tiene definicion, no lo estas comparando con una variable...

una consulta...por ke usas Cmd para esto?...haz probado asi?

SQL="SELECT * FROM Tabla WHERE IdTema = '" + Cstr(IdTema) + "' ORDER BY IdSubtema"
Set Rst = Conexion.execute(SQL)

saludos
  #11 (permalink)  
Antiguo 03/05/2004, 03:18
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
Hola de nuevo,

Voy a probar y ahora te digo.

Gracias por responder.
__________________

***Aprendiz de todo y maestro de nada***
  #12 (permalink)  
Antiguo 03/05/2004, 04:03
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
¡¡¡funciona!!!

Muchas gracias por el consejo, la verdad es que estoy aprendiendo un taco gracias a vuestra ayuda.

solo una cosilla más, (tampoco quiero abusar de vuestra paciencia).

Cuando abrí este post estaba por preguntar una duda, pero no quise ser "agobiante".

Por eso, me gustaría aprovechar ahora para preguntar una cosilla con este post.

Tengo la página principal donde se abre la bd, se hace la consulta y se pasa el argumento a otra página, de esta forma....

El RecorSet

[CODE]
set registros=conexion.execute("SELECT IdTema, Tema FROM Tabla ORDER BY IdTema;")

/CODE]

De donde extraigo el IdTema y el Tema ordenados por IdTema, hasta aquí todo bien, lo meto en un bucle y lo muestro así para pasarlo a la otra page....

Código:
<a title="Elige un tema" href="page.asp?IdTema=<%=registros("IdTema")%>"><%=registros("Tema")%>
		 </a>
Hasta aquí todo bien, lo que me gustaría es conseguir pasar como argumento no solo los registros IdTema, sino también pasar los registros Tema. Yo he probado de la siguiente manera...

Código:
<a title="Elige un tema" href="page.asp?IdTema=<%=registros("IdTema")%>&Tema=<%=registros("Tema")%>"><%=registros("Tema")%>
y no me sale nada, aunque el bucle se ejecuta, (porque le he puesto una lista sin ordenar y lo veo que la pinta), no me muestra en la page los resultados.

¿que estoy haciendo mal al querer pasar otro argumento a la page? si esto es puro y duro html de parvulario ¿no???

En la bd solo tengo dos campos, el idTema(numero) y el tema(texto).

En fin, si alguien puede aconsejarme,

Gracias de antemano
__________________

***Aprendiz de todo y maestro de nada***

Última edición por epa2; 03/05/2004 a las 04:05
  #13 (permalink)  
Antiguo 03/05/2004, 10:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
hola epa2, yo veo bien la línea que colocás... salvo que le falta el tag de cierre del enlace (</a>) al final.

Fue un error al transcribir esa línea al foro o el tag no existe?

Por lo demás, lo veo bien.. eso debería generar una línea como la siguiente:


<a title="Elige un tema" href="page.asp?IdTema=ElID&Tema=ElTema">ElTema</a>
  #14 (permalink)  
Antiguo 04/05/2004, 07:51
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 23 años
Puntos: 9
Hola de nuevo

Este es uno de los misterios de la informatica que pasará a la historia

no me lo explico, ¿te ha pasado alguna vez que has ido a abrir la nevera y has visto el pollo que tenías dentro?. Bien, pues luego cierras la puerta de la nevera, te vuelves, otra vez lo abres, y ¡¡¡el pollo no está!!!

ha desaparecido.

pos lo mismo me está pasando a mí.

Resulta que el código está correcto, es igual que el que yo escribí anteriormente (con el cierre de la etiqueta a, que se me olvidó ponerlo aquí en el foro).

Lo he probado en dos navegadores IE y Nescafé, y cuando en ambos le digo para leer el codigo fuente/origen de página pues me muestra el link ¡¡¡que efectivamente me pilla el registros("Tema") como argumento!!!

Pero por algún misterio de la ciencia misteriosa, no me llega a pintar el texto que me servirá de link para pinchar.

¿la solución ante este expediente x?

Bueno, he tenido que lanzar un suspiro de resignación, y para que el pollo siga en la nevera y no desaparezca de pronto, lo que he hecho es crear una variable dentro del bucle y luego en el link en vez de pasarle el registros("tema") lo que le pasa es la variable.

Algo así....

Código:
Do until registros.eof
tema = registros("Tema")
<a title="Elige un tema" 
	href="page.asp?IdTema=<%=registros("IdTema")%>&Tema=<%=tema%>">
	<% response.write tema%>
		 </a>

Antes lo tenía así....

Código:
<a title="Elige un tema" 
	href="page.asp?IdTema=<%=registros("IdTema")%>&Tema=<%=registros("IdTema")%
	<% =registros("IdTema")%%>
		 </a>
por alguna misteriosa razón, el último registro no me lo escribe.

En fin, espero que este post le pueda servir a alguien que le pase lo mismo, quedará para los anales del foro, je je.

Gracias por vuestra ayuda.
__________________

***Aprendiz de todo y maestro de nada***
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 08:17.