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

Error en validación de una consulta.

Estas en el tema de Error en validación de una consulta. en el foro de ASP Clásico en Foros del Web. Aqui esta el codigo Código: set Rs = Server.CreateObject("ADODB.Recordset") Rs.CursorType=1 sql="SELECT id FROM instituciones" Rs.Open sql, conn IF not isobject (Rs) THEN Msg = "Alerta ...
  #1 (permalink)  
Antiguo 06/08/2008, 09:22
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 6 meses
Puntos: 1
Error en validación de una consulta.

Aqui esta el codigo

Código:
        set Rs = Server.CreateObject("ADODB.Recordset")	
	Rs.CursorType=1		
	sql="SELECT id FROM instituciones"		
	Rs.Open sql, conn 	
	IF not isobject (Rs) THEN
		Msg = "Alerta no se encontro objeto en la bd"		
	ELSEIF Rs.RecordCount = 0 THEN 		
		Msg="Atencion se encontraron: "&Rs.RecordCount&" registros "
	ELSE
		Msg="Se encontraron: "&Rs.RecordCount&" registros"
	END IF
	response.write Msg
	Rs.close
Lo único que no hace es mostrarme el mensaje de Alerta, cuando no consigue el objeto en la BD, sino que entra en el ELSEIF . Creo que isobject verifica si existe el Recordset, y no si es valido..

Hay forma de verificar que el objeto esta en la BD, para que ingrese en la primera opción del IF???
__________________
S.L.P.S.
  #2 (permalink)  
Antiguo 06/08/2008, 10:14
 
Fecha de Ingreso: octubre-2006
Mensajes: 12
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Error en validación de una consulta.

Recuerdo haber utilizado ADODB hace algún tiempo. Creo que te sería mejor si cambias la comprobación si validas mediante la tabla de resultados del Query. Algo como

Instituciones = Rs.Open(sql, conn)

Y posteriormente checkeas el valor del número de filas de instituciones.
  #3 (permalink)  
Antiguo 06/08/2008, 10:53
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Error en validación de una consulta.

Gracias jmanuelemus

Lo que pasa es que tiene que haber diferencia entre 0 filas (o registros) o que simplemente no se consigue la vista o tabla.

Esto lo voy a usar para monitoriar una BD, por eso debe ser bien especifica.
__________________
S.L.P.S.
  #4 (permalink)  
Antiguo 06/08/2008, 11:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Error en validación de una consulta.

La propiedad que se usa regularmente es EOF (End Of File) que indica que el recorset se encuentra al final por lo tanto para un recordset recién abierto, esto te dice que en realidad está vacio:

Código:
if RS.EOF then
  'No hay registros
else
  'procesas datos
end if
La función isObject regresará un boolean si el argumento pasado es objeto, un recordset vacio es un objeto independientemente de su estado, así que siempre te regresará verdadero.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 06/08/2008, 13:18
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Error en validación de una consulta.

Gracias u_goldman

Pero lo que quiero saber es diferenciar si el recordset es valido, es decir si existe la tabla o consulta, o si tiene registros o no.

Con el RS.EOF no puedo diferenciar una cosa de la otra.

Tienes otra opción??
__________________
S.L.P.S.
  #6 (permalink)  
Antiguo 06/08/2008, 13:21
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Error en validación de una consulta.

¿Si existe la tabla o consulta?

La verdad no entiendo a que te refieres con eso, si puedes explicar mejor que es lo que pretendes hacer podemos ayudarte mejor, el que no exista la tabla sugiere un error de programación primario, realmente poco o nada tiene que ver con el recordset.

Edito: Podrías para saber si existe una tabla -aún no estoy seguro de por qué deberíamos hacer esto-

1. Trata de hacerle un query a una tabla que no existe y registra su error, después agregar un error handler para ese error específicamente.
2. En SQL existe algo llamado INFORMATION_SCHEMA el cuál te permite hacerle un query a tu base de datos para ver sus objetos.
3. En Access lo anterior también es posible -obvio sin el information schema- pero no me preguntes como hace un siglo que no toco ni tocaré -espero- Access, me parece haber leído algo en las FAQs al respecto.

Me imagino por la naturaleza de la pregunta que estamos lidiando con tablas dinámicamente creadas, si esto es cierto de una vez te recomiendo no hacerlo -ya pasé por ahí alguna vez- es una aproximación que en contadísimos casos realmente se require, mejor replantea el ordenamiento de tus datos y no será necesario hacer esto, claro todo esto sacando la bola de cristal y asumiendo que lo estás haciendo, si no, solamente omite este comentario.

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 06/08/2008 a las 13:26
  #7 (permalink)  
Antiguo 06/08/2008, 13:28
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Error en validación de una consulta.

La idea que que esta pagina.asp verifique los registros de las tablas de la BD, en caso que se elimine una tabla o una vista, puedas ver la diferencia, ya que esas tablas varias veces se vacían, y allí no debería haber problema, pero en caso de que la eliminen debería dar un alerta.

Creo que deberia es registrar el error que me da el query como dices en el punto 1, pero como hago eso en ASP?
__________________
S.L.P.S.

Última edición por fenix4; 06/08/2008 a las 13:38
  #8 (permalink)  
Antiguo 06/08/2008, 13:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Error en validación de una consulta.

Si tu base de datos es SQL, puedes hacer mediante T-SQL un query al information_schema

Código:
if EXISTS (select * from INFORMATION_SCHEMA.tables where table_name = 'tabla')
	Select Top 1 * from Tabla
ELSE
	SELECT 'No existe' AS campo1
Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 06/08/2008, 13:58
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Error en validación de una consulta.

OK dejame hacerlo por allí, o ver como le doy la vuelta.

Muchas gracias, a lo mejor estaba enfocando mal la solución.
__________________
S.L.P.S.
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 14:32.