Verificacion de Keys al meter datos con ASP.

19/10/2004 - 23:11 por JimmySlam | Informe spam
Hola tengo una preguntilla.
Cómo hago para verificar datos antes de meter datos en una tabla?

Es decir quiero evitar que la página me de error diciendome ke hay una key
duplicada yblablabla.
Los datos los meto por un formulario y van a un asp, en ese asp kiero meter
la identificacion. Quiero que al ir a esa pagina ASP, ponga "su cliente ya
existe" (o algo asi) y no meta los datos en la BD.

Muchas Gracias.

Preguntas similare

Leer las respuestas

#1 Miguel Gonzalez
19/10/2004 - 23:26 | Informe spam
Hola Jimmy.

Más o menos, se trataría de hacer primero una consulta para comprobar que la "key" (clave) existe:

sql1 = "select clave from tabla where clave = " & Request.Form("Clave")

Si el "recordset" devuelve registros es que ya existe:

<&
If miRecordset.RecordCount = 1 Then
' La clave ya existe y redirijo a una página que avise de ello
Else
' No existe la clave y procedo a la inserción del nuevo registro
End If
&>

Saludos!
Miguel


JimmySlam wrote:
Hola tengo una preguntilla.
Cómo hago para verificar datos antes de meter datos en una tabla?

Es decir quiero evitar que la página me de error diciendome ke hay una key
duplicada yblablabla.
Los datos los meto por un formulario y van a un asp, en ese asp kiero meter
la identificacion. Quiero que al ir a esa pagina ASP, ponga "su cliente ya
existe" (o algo asi) y no meta los datos en la BD.

Muchas Gracias.


Respuesta Responder a este mensaje
#2 Jaime
20/10/2004 - 00:46 | Informe spam
Tengo este codigo, no se muy bien lo que estoy haciendo pero mas o menos...:

dim conConexion, rs, campos
campos=0
set conConexion=server.CreateObject("adodb.connection")
conConexion.Provider="Microsoft.Jet.OLEDB.4.0"
conConexion.Open Server.MapPath("clientes.mdb"),"Admin",""
set rs=server.CreateObject("adodb.recordset")
sql1="select" & Request.Form("ID") & " from cliente where dni = " &
Request.Form("ID")
sql2="select * from cliente,asociacion,proyecto"

rs.open "select * from cliente,asociacion,proyecto" ,conConexion,2,3,1

rs.execute(sql1)

If rs.RecordCount = 1 Then
error_=4
Else
error_=0
hot=0
End If

rs.execute(sql2)
... y aki el programa sigue...




From: "Miguel Gonzalez"
Newsgroups: microsoft.public.es.asp
Sent: Tuesday, October 19, 2004 11:26 PM
Subject: Re: Verificacion de Keys al meter datos con ASP.


Hola Jimmy.

Más o menos, se trataría de hacer primero una consulta para comprobar que la
"key" (clave) existe:

sql1 = "select clave from tabla where clave = " & Request.Form("Clave")

Si el "recordset" devuelve registros es que ya existe:

<&
If miRecordset.RecordCount = 1 Then
' La clave ya existe y redirijo a una página que avise de ello
Else
' No existe la clave y procedo a la inserción del nuevo registro
End If
&>

Saludos!
Miguel


JimmySlam wrote:
Hola tengo una preguntilla.
Cómo hago para verificar datos antes de meter datos en una tabla?

Es decir quiero evitar que la página me de error diciendome ke hay una key
duplicada yblablabla.
Los datos los meto por un formulario y van a un asp, en ese asp kiero
meter la identificacion. Quiero que al ir a esa pagina ASP, ponga "su
cliente ya existe" (o algo asi) y no meta los datos en la BD.

Muchas Gracias.


Respuesta Responder a este mensaje
#3 Jaime
20/10/2004 - 11:15 | Informe spam
Miraver si ese codigo funciona. Se me olvido decirte que jaime es jimmyslam.
Respuesta Responder a este mensaje
#4 Miguel Gonzalez
20/10/2004 - 13:15 | Informe spam
Hola Jaime/Jimmy ;-)

Me parece que el código que adjuntas no es muy "operativo"...

Intentaré comentártelo:

dim conConexion, rs, campos
campos=0



La variable campos supongo que la utilizarás más adelante...

set conConexion=server.CreateObject("adodb.connection")
conConexion.Provider="Microsoft.Jet.OLEDB.4.0"
conConexion.Open Server.MapPath("clientes.mdb"),"Admin",""
set rs=server.CreateObject("adodb.recordset")



Esto de arriba "ok", salvo que no me parece recomendable que tengas la base de datos en el mismo
directorio que la página asp (la base de datos podría descargarse desde internet)

sql1="select" & Request.Form("ID") & " from cliente where dni = " &
Request.Form("ID")



Si en el valor "ID" que se recoge del "post" viene el "dni" a buscar la sentencia sql1 debería ser:

<%
sql1 "select dni from cliente where dni = " & Request.Form("ID")
%>

O bien, si el valor del dni incluye letras, el sql debería encerrar el dato entre comillas:

<%
sql1 "select dni from cliente where dni = '" & Request.Form("ID") & "'"
%>

Para ejecutar este sql debes abrir el objeto recordset "rs":

<%
rs.Open sql1, conConexion
%>

...y comprobar si devuelve registros (lo que indica que el usuario ya existe):

<%
If rs.RecordCount = 1 Then
' Si devuelve un registro es que el usuario existe
' Cierro el recordset
rs.Close
' Y aviso de la circunstancia:
Response.Write("El usuario ya existe")
Else
' Si no devuelve nada es que el usuario no existe.
' Cierro el recordset
rs.Close
' Preparo el sql de inserción:
sql1 = "insert into cliente(dni) values(" & Request.Form("ID")
' Si el dni tiene letras, recuerda poner el dato "ID" entre comillas, con lo que la sentencia sería:
sql1 = "insert into cliente(dni) values('" & Request.Form("ID") & "'"
' Se ejecuta el sql que inserta el nuevo usuario:
conConexion.Execute(sql1)
' Y aviso de la circunstancia
Response.Write("Se ha agregado un nuevo usuario")
End If
%>

sql2="select * from cliente,asociacion,proyecto"
rs.open "select * from cliente,asociacion,proyecto" ,conConexion,2,3,1



No entiendo este sql2, me parece que no está bien construido. Por otro lado, si ya tienes la
sentencia almacenada en la variable "sql2" no hace falta que la repitas al abrir el recordset y
basta con lo realices así: <%rs.Open sql2, conConexion%>

rs.execute(sql1)
If rs.RecordCount = 1 Then
error_=4
Else
error_=0
hot=0
End If

rs.execute(sql2)



Esto de arriba sobra, puesto que ya has comprobado lo del nuevo usuario y has abierto un nuevo recordset

... y aki el programa sigue...



... Pues sigue

Recuerda también cerrar la conexion y destruir los objetos al final de la página:

<%
Set rs = Nothing
conConexion.Close
Set conConexion = Nothing
%>

Saludos!
Miguel
Respuesta Responder a este mensaje
#5 Jaime
20/10/2004 - 23:35 | Informe spam
Lo voy a intentar a ver que consigo.Pero escucha , yo los datos los meto por
record set.
Tengo que empezar a usar SQL que esto no puede ser...
Weno yo o hago y te cuento.


Muchas gracias por tu dedicacion de verdad!




"Miguel Gonzalez" escribió en el mensaje
news:%
Hola Jaime/Jimmy ;-)

Me parece que el código que adjuntas no es muy "operativo"...

Intentaré comentártelo:

dim conConexion, rs, campos
campos=0



La variable campos supongo que la utilizarás más adelante...

set conConexion=server.CreateObject("adodb.connection")
conConexion.Provider="Microsoft.Jet.OLEDB.4.0"
conConexion.Open Server.MapPath("clientes.mdb"),"Admin",""
set rs=server.CreateObject("adodb.recordset")



Esto de arriba "ok", salvo que no me parece recomendable que tengas la base
de datos en el mismo
directorio que la página asp (la base de datos podría descargarse desde
internet)

sql1="select" & Request.Form("ID") & " from cliente where dni = " &
Request.Form("ID")



Si en el valor "ID" que se recoge del "post" viene el "dni" a buscar la
sentencia sql1 debería ser:

<%
sql1 "select dni from cliente where dni = " & Request.Form("ID")
%>

O bien, si el valor del dni incluye letras, el sql debería encerrar el dato
entre comillas:

<%
sql1 "select dni from cliente where dni = '" & Request.Form("ID") & "'"
%>

Para ejecutar este sql debes abrir el objeto recordset "rs":

<%
rs.Open sql1, conConexion
%>

...y comprobar si devuelve registros (lo que indica que el usuario ya
existe):

<%
If rs.RecordCount = 1 Then
' Si devuelve un registro es que el usuario existe
' Cierro el recordset
rs.Close
' Y aviso de la circunstancia:
Response.Write("El usuario ya existe")
Else
' Si no devuelve nada es que el usuario no existe.
' Cierro el recordset
rs.Close
' Preparo el sql de inserción:
sql1 = "insert into cliente(dni) values(" & Request.Form("ID")
' Si el dni tiene letras, recuerda poner el dato "ID" entre comillas, con lo
que la sentencia sería:
sql1 = "insert into cliente(dni) values('" & Request.Form("ID") & "'"
' Se ejecuta el sql que inserta el nuevo usuario:
conConexion.Execute(sql1)
' Y aviso de la circunstancia
Response.Write("Se ha agregado un nuevo usuario")
End If
%>

sql2="select * from cliente,asociacion,proyecto"
rs.open "select * from cliente,asociacion,proyecto" ,conConexion,2,3,1



No entiendo este sql2, me parece que no está bien construido. Por otro lado,
si ya tienes la
sentencia almacenada en la variable "sql2" no hace falta que la repitas al
abrir el recordset y
basta con lo realices así: <%rs.Open sql2, conConexion%>

rs.execute(sql1)
If rs.RecordCount = 1 Then
error_=4
Else
error_=0
hot=0
End If

rs.execute(sql2)



Esto de arriba sobra, puesto que ya has comprobado lo del nuevo usuario y
has abierto un nuevo recordset

... y aki el programa sigue...



... Pues sigue

Recuerda también cerrar la conexion y destruir los objetos al final de la
página:

<%
Set rs = Nothing
conConexion.Close
Set conConexion = Nothing
%>

Saludos!
Miguel
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida