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

Registro duplicados

Estas en el tema de Registro duplicados en el foro de ASP Clásico en Foros del Web. Hola saludos a todos: Mi problema es el siguiente: Cuando realizo la inserción de un registro no existente en la base de datos, el sistema ...
  #1 (permalink)  
Antiguo 14/05/2008, 22:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 44
Antigüedad: 16 años, 11 meses
Puntos: 1
Mensaje Registro duplicados

Hola saludos a todos:
Mi problema es el siguiente:

Cuando realizo la inserción de un registro no existente en la base de datos, el sistema me lo inserta y cuando inserto un registro existente no me lo inserta. Hasta aqui todo bien. El problema se presenta al momento de redireccionar siempre me entrega el mismo mensaje que dice el registro ya existe. Aun asi evitando los registros duplicados.


asi es la manera en que realizo la validacion. Claro antes realizando una consulta a la base de datos preguntando por un usuario existente en dicha tabla.
Código PHP:
sSwitch=0

Do Until Reg.EOF
sSwitch 

Reg
.Movenext
Loop

if sSwitch 0 Then

Sql
="Insert Into USUARIOBOD (usuario, contrasena, nombre, apellidos, cargo, tipo) Values ('"&sUser&"','"&sPass&"','"&sNom&"','"&sApe&"','"&sCargo&"','"&sTipo&"')"
Set Reg DBConn.Execute(Sql)

Response.Write("<a href='Leer2.asp'> No Existe</a>")

else
Response.Write("<a href='duplicado.asp'> Existe</a>")
End if 

aca esta el codigo completo:

Código PHP:

<%
if (
Session("Usuario") = ""Then 
   Response
.Redirect "advertencia.asp"
End if


sUser Request.Form("textUser")
sPass Request.Form("textPass")
sNom Request.Form("textNom")
sApe Request.Form("textApe")
sCargo Request.Form("textCar")

function 
OpenMDBConn(Path)
  
Dim ConnSet Conn CreateObject("ADODB.Connection")
  
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" Server.MapPath("bod.mdb")       
                  
                   
Set OpenMDBConn Conn
End 
Function
Dim sSwitch
Dim sTipo
Dim DBConn
Set DBConn 
OpenMDBConn("C:\Inetpub\wwwroot\bod")
Set Reg Server.CreateObject("ADODB.RecordSet"
Set Reg2 Server.CreateObject("ADODB.RecordSet"
Sql="select Id From USUARIOBOD Where usuario = '"&sUser&"'"

Reg.Open SqlDBConn 
sTipo
=0
sSwitch
=0

Do Until Reg.EOF
sSwitch 

Reg
.Movenext
Loop

if sSwitch 0 Then

Sql
="Insert Into USUARIOBOD (usuario, contrasena, nombre, apellidos, cargo, tipo) Values ('"&sUser&"','"&sPass&"','"&sNom&"','"&sApe&"','"&sCargo&"','"&sTipo&"')"
Set Reg DBConn.Execute(Sql)

Response.Write("<a href='Leer2.asp'> No Existe</a>")

else
Response.Write("<a href='duplicado.asp'> Existe</a>")
End if
%> 
Espero no sea una molestia crear este tipo de tema. Pero es que ya he probado con bastantes cosas y aun no me funciona..


Gracias por su atención
  #2 (permalink)  
Antiguo 15/05/2008, 09:40
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Registro duplicados

leyendo rapido no encontre algo rraro

prueba imprimiendo el valor de tu variable

Do Until Reg.EOF
sSwitch = 1
Reg.Movenext
Loop

response.write "variable sSwitch es igual a: " & sSwitch
response.end

esto te permitirá ver que trae esa variable

lo otro es verificar que el primer SQL se este ejecutando correctamente


suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 15/05/2008, 22:28
 
Fecha de Ingreso: mayo-2008
Mensajes: 44
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: Re: Registro duplicados

Cita:
Iniciado por JuanRAPerez Ver Mensaje
leyendo rapido no encontre algo rraro

prueba imprimiendo el valor de tu variable

Do Until Reg.EOF
sSwitch = 1
Reg.Movenext
Loop

response.write "variable sSwitch es igual a: " & sSwitch
response.end

esto te permitirá ver que trae esa variable

lo otro es verificar que el primer SQL se este ejecutando correctamente


suerte
La variable sSwitch trae un valor 0

Resultado de la ejecución
variable sSwitch es igual a: 0


.*****************************
Alguien tiene un ejemplo funcional de evitar registros duplicado ? o una manito con este ejemplo plz.

Se agradece

Última edición por sikociado; 15/05/2008 a las 22:45
  #4 (permalink)  
Antiguo 16/05/2008, 01:17
 
Fecha de Ingreso: septiembre-2005
Mensajes: 135
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Registro duplicados

Antes de ejecutar el recordset haz un response.write de la consulta y justo despues pon lo siguiente, por si acaso, que es lo que yo suelo hacer para saber si existe o no:

If Reg.EOF and Reg.BOF Then
'la consulta no trae ningún resultado
Else
Sw = 1
Reg.Close
End If

Si no trae ningún valor debería de ser un problema de la consulta.
  #5 (permalink)  
Antiguo 16/05/2008, 08:29
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Registro duplicados

lod e Lebennin es lo que uso generalmente o un RecordCount,

prueba de esa forma, dado que si la variable trae 0 y te imprime el else algo esta pasando en algun lugar rrao.

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #6 (permalink)  
Antiguo 19/05/2008, 10:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 44
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: Registro duplicados

Siempre vuelve a lo mismo ... basandome en las soluciones que me dan las personas de la comunidad de este foro.

No entiendo por que ... Sera un bugg del IIS. No entiendo seguire buscando la solución para este problema. Si encuentro la solucion la comparto con la comunidad. Si ustedes tienen otras soluciones posteanla para ver si llega al fin del problema. Ademas le servira a muchos por que esto es muy habitual dentro de un sistema de información.


Adios

  #7 (permalink)  
Antiguo 21/05/2008, 14:50
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
Respuesta: Registro duplicados

la tipica estructura para saber que esta pasando seria similar a esto

Código HTML:
<%
function insertar(sql)
    conexion.execute(sql)
    if Err=0 then
        'procedemos a informar que si se inserto el registro
        response.Write "insercion exitosa"
    else
        'igualmente, escribir los errores
        response.Write "insercion fallida"
    end if
end function

'Existe error en la sentencia
if Err=0 then
    'no existe, prosigamos
    'preguntemos ahora entonces si es final del archivo
    if rs.eof=true then
        'si lo es, entonces mensaje de que no concuerda con nada
        'por lo tanto, puede usarse
        response.Write "no existe en la tabla"
        
        'procedo a realizar las acciones pertinentes
        SQL_ins = "insert into tabla(campo1,campo2,campo3)"&_
                " values ('campo1',campo2,'campo3');"

        'llamamos a nuestra funcion de insercion
        'enviando la sentencia como parametro
        insertar(sql_ins)
    else
        'caso contrario, existe en la tabla
        response.Write "esta usted duplicando un registro"
    end if
else
    'existio error, desplegarlo y verificar que todo este bien
    'imprimir error
    response.Write err & "<br />"
    'imprimir la consulta que se intento
    response.Write SQLquery & "<br />"
end if
%> 
no se si les sirva de ejemplo

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:40.