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

verificar datos de la DB

Estas en el tema de verificar datos de la DB en el foro de ASP Clásico en Foros del Web. cual es la forma para saber si al hacer una consulta a la DB, me encuentra por lo menos un registro?? me imagino que es ...
  #1 (permalink)  
Antiguo 07/11/2007, 08:28
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
De acuerdo verificar datos de la DB

cual es la forma para saber si al hacer una consulta a la DB, me encuentra por lo menos un registro??

me imagino que es con alguna condicion, he encontrado algo de esta manera pero no entiedo el dogigo If RS.EOF = True and RS.Bof Then

les agradezco por la ayuda que me brinden
  #2 (permalink)  
Antiguo 07/11/2007, 08:34
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 19 años, 3 meses
Puntos: 8
Re: verificar datos de la DB

Set Rs = Server.CreateObject("ADODB.Recordset")
Call_Sql = "SELECT * FROM Tabla "
'response.Write(Call_Sql)
'response.End()
Rs.Open Call_Sql, MM_conn_STRING,1,2
Rs_total = Rs.RecordCount
el rs total tendra el numero de registros enccontrados
suerte
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #3 (permalink)  
Antiguo 07/11/2007, 08:51
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

me prodrias explicar detalladamente la linea de codigo

If RS.EOF = True and RS.Bof Then
  #4 (permalink)  
Antiguo 07/11/2007, 09:57
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: verificar datos de la DB

Eso significa:

"Si el puntero del recordset ha llegado al final y, a la vez, esta al principio entonces..."

La verdad, es un poco tonto ya que el cursor puede o no estar al principio del recordset. Basta con comprobar si hemos llegado al final nada más abrir el recordset.

Para comprobar si hay o no registro, tras la ejecución de la sentencia SQL (ya sea set rs = con.execute('Sentencia SQL') o a traves del método Open del recordset):

if rs.EOF then ' EOF --> End Of File
' NO HAY REGISTROS YA QUE ESTAMOS AL FINAL
else
'HAY REGISTROS YA QUE ESTAMOS EN BOF --> Begin Of File

end if





Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #5 (permalink)  
Antiguo 07/11/2007, 10:32
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

Cita:
SQL="SELECT EMAIL FROM _clientes WHERE CUENTA='"&Request.Form("n_cuenta"&conta)&"'"
cn.execute(SQL)'execuamos la sentencia SQL

If RS.Bof Then
sSQL = "INSERT INTO _clientes (EMAIL, NUM_IDENTIFICACION, CLIENTE, DIRECCION, TELEFONO, PASSWORD, ESTADO)" & "VALUES ('"& Request.Form("mail") & "','" & Request.Form("idntfccion") & "','" & Request.Form("nombre") & "','" & Request.Form("dir") & "','" & Request.Form("tel") & "','" & Password & "', '0');"
cn.execute(sSQL)'execuamos la sentencia SQL
else
'msg = "Lo sentimos pero la cueta que usted ingreso ya esta siendo utilizada por otro usuario <br/>"
end if
no se porq este codigo no me funciona y me da como error:

ADODB.Recordset error '800a0e78'

Operation is not allowed when the object is closed.

/atencion/_registro.asp, line 42
  #6 (permalink)  
Antiguo 07/11/2007, 10:38
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, 1 mes
Puntos: 88
Re: verificar datos de la DB

tienes que declarar una variable aki
Cita:
SET RS=cn.execute(SQL)'execuamos la sentencia SQL
al igual que todas tus consultas
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 07/11/2007, 10:46
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, 1 mes
Puntos: 88
Re: verificar datos de la DB

el "por que?" de esto... bueno

Haces referencia a un control(RS) que no existe en la consulta que intentas,

podra ejecutarse, y muy seguro que se complete, pero como no hay quien reciba los parametros de esta consulta o mejor dicho la respuesta de la consulta, es po reso que al intentar lo siguiente:

Cita:
If RS.Bof Then
te aparece el error que nos mostraste, ya que ese objeto no se inicalizo, no existe, o no se encuentra....

para inicializarlo, podras hacer lo siguiente:

Cita:
SET RS=server.CreateObject("ADOBE.RECORDSET")
o
Cita:
SET RS=CN.EXECUTE(SQL)
la segunda opcion es la mas usada, pero no desmerita la primera

Ahora... en pocas y resumidas palabras ese seria el "por que"

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #8 (permalink)  
Antiguo 07/11/2007, 10:46
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

asi tengo declarada la variable
Cita:
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
cn.Open GetConnectionString
mi pregunta es necesariamente tengo q hacer esto
Cita:
SET RS=cn.execute(SQL)'execuamos la sentencia SQL
  #9 (permalink)  
Antiguo 07/11/2007, 11:42
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, 1 mes
Puntos: 88
Re: verificar datos de la DB

aunque tengas declarada la variable.... en que parte le asignas al RS, lo que deseas hacer????

Cita:
SQL="SELECT EMAIL FROM _clientes WHERE CUENTA='"&Request.Form("n_cuenta"&conta)&"'"
cn.execute(SQL)'execuamos la sentencia SQL

If RS.Bof Then
sSQL = "INSERT INTO _clientes (EMAIL, NUM_IDENTIFICACION, CLIENTE, DIRECCION, TELEFONO, PASSWORD, ESTADO)" & "VALUES ('"& Request.Form("mail") & "','" & Request.Form("idntfccion") & "','" & Request.Form("nombre") & "','" & Request.Form("dir") & "','" & Request.Form("tel") & "','" & Password & "', '0');"
cn.execute(sSQL)'execuamos la sentencia SQL
else
'msg = "Lo sentimos pero la cueta que usted ingreso ya esta siendo utilizada por otro usuario <br/>"
end if
si te fijas bien, ejecutas la consulta, pero como te dije anteriormente, no le asignas nada al RS, por eso da el error,, si quires manejarlo con el RS, entonces tendrias que cambiar la forma de la consulta, de la siguiente manera

Cita:
SQL="SELECT EMAIL FROM _clientes WHERE CUENTA='"&Request.Form("n_cuenta"&conta)&"'"
rs.open SQL,cn,1,2 'execuamos la sentencia SQL

If RS.Bof Then
sSQL = "INSERT INTO _clientes (EMAIL, NUM_IDENTIFICACION, CLIENTE, DIRECCION, TELEFONO, PASSWORD, ESTADO)" & "VALUES ('"& Request.Form("mail") & "','" & Request.Form("idntfccion") & "','" & Request.Form("nombre") & "','" & Request.Form("dir") & "','" & Request.Form("tel") & "','" & Password & "', '0');"
set rdst=cn.execute(sSQL)'execuamos la sentencia SQL
else
'msg = "Lo sentimos pero la cueta que usted ingreso ya esta siendo utilizada por otro usuario <br/>"
end if
rs.close '<--- Cerramos el recordset que ya no usaremos
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 07/11/2007, 13:23
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

Para el query donde extraes los datos es necesario hacer el set RS=cn.execute(sSQL)
para el INSERT no es necesario...

Te explico...

El recordset (ADODB.Recordset) se utiliza para estraer datos de un query, el objeto Recordset va a tener el cursor que te devuelve dicho query para que puedas usar la data de los registros que ahi se obtienen.

Los comandos INSERT, UPDATE, DELETE, no devuelven ningún cursor, es decir, no devuelven datos, por lo que no es necesario usar un Recordset, para esos casos utilizas la propiedad EXECUTE de tu variable de conexión
  #11 (permalink)  
Antiguo 07/11/2007, 13:38
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

le puse este codigo pero no me funciono
Cita:
SQL="SELECT EMAIL FROM _clientes WHERE CUENTA='"&Request.Form("n_cuenta"&conta)&"'"
rs=cn.execute(SQL)'ejecutamos la sentencia SQL

If RS.Bof Then
  #12 (permalink)  
Antiguo 07/11/2007, 13:38
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

me da este error
Cita:
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'rs.Bof'

/atencion/_registro.asp, line 42
  #13 (permalink)  
Antiguo 07/11/2007, 14:21
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, 1 mes
Puntos: 88
Re: verificar datos de la DB

bueno, entonces cambia la forma en que buscas la consulta

Cita:
if RS.EOF=FALSE then
haber que pasa, una preguntita mas.... que base de datos usas?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #14 (permalink)  
Antiguo 07/11/2007, 14:32
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

estoy usando mysql
  #15 (permalink)  
Antiguo 07/11/2007, 14:34
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

mira que me sige sacando el error
Cita:
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'rs.EOF'

/atencion/_registro.asp, line 43
  #16 (permalink)  
Antiguo 07/11/2007, 17:07
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

Cita:
le puse este codigo pero no me funciono
Cita:
SQL="SELECT EMAIL FROM _clientes WHERE CUENTA='"&Request.Form("n_cuenta"&conta)&"'"
rs=cn.execute(SQL)'ejecutamos la sentencia SQL

If RS.Bof Then
SET rs=cn.execute(SQL)'ejecutamos la sentencia SQL
  #17 (permalink)  
Antiguo 08/11/2007, 07:43
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

muchas gracias ahora si me funcionó. pero lo q no entiendo es, porque nuevamente tengo q colocar SET rs..., si en la parte de arriba tengo.
Cita:
'Conexion a la DB
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
cn.Open GetConnectionString
  #18 (permalink)  
Antiguo 08/11/2007, 08:00
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

El primero es para crear el objeto Recordset, el segundo es para referenciar a la consulta de tu base de datos, cuando se trabaja con objetos siempre se usa el set para referenciar...
  #19 (permalink)  
Antiguo 08/11/2007, 08:21
 
Fecha de Ingreso: octubre-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: verificar datos de la DB

Disculpa y si necesito hacer varios SELECT, en cada uno ose en cn.execute(SQL) tengo q colocar SET rs=cn.execute(SQL)?
  #20 (permalink)  
Antiguo 08/11/2007, 11:36
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: verificar datos de la DB

Cita:
Iniciado por robison Ver Mensaje
Disculpa y si necesito hacer varios SELECT, en cada uno ose en cn.execute(SQL) tengo q colocar SET rs=cn.execute(SQL)?
Sip. Recuerda que SET te permite asignar objetos a una variable. Lo que te devuelve el execute es un recordset el cual es un objeto.




Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #21 (permalink)  
Antiguo 09/11/2007, 03:59
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: verificar datos de la DB

Fijate bien es estas sentencias, Robison:

1 -- Set cn = Server.CreateObject("ADODB.Connection")

Aqui asignas a la variable cn un objeto connection vacio y dispuesto a usarse

2 -- Set rs = Server.CreateObject("ADODB.RecordSet")

Aqui haces lo propio con un objeto Recordset a la variable rs.


Hasta ahora tienes dos asignaciones hechas: una para abrir una conexión con la base de datos (cn) y otra para recibir una colección de datos. Hasta ahora no tienen vinculación alguna entre ellas.


2 -- cn.Open GetConnectionString

Aqui abrimos la conexión con la base de datos. Esta se encuentra esperando una solicitud. Realmente la variable cn solo sirve de puente entre la base de datos y tu programación.



Ahora nos encontramos en la encrucijada: ¿cómo hago para recibir los datos que necesito, es decir, un grupo de registros con los datos? Para eso usamos el Recordset que nos permite rellenarlo con grupos de datos. Pero... ¿cómo los vinculamos? ¿cómo hago para obtener los datos que quiero? Pues asignando a mi variable rs el resultado de una consulta a la base de datos que está esperando en la variable cn:

4 --

set rs = cn.execute("Sentencia SQL")
o
rs.Open "Sentencia SQL", cn, 1, 2 ¿Por qué se usa set? por que esta es la forma en que el motor de ASP referencia los objetos. ¿Porq ue no la usamos en el segundo caso? Porque el método Open del recordset lo hará por nosotros cuando asigne su segundo parámetro (que es cn) en la ejecución del método Open.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
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 15:49.