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

Problema con añadir registro...

Estas en el tema de Problema con añadir registro... en el foro de ASP Clásico en Foros del Web. ... Veamos, tengo un sistema de TABLAS... y entonces, para una seccion, uso dos tablas: LYRICS_ANIME LYRICS_LYRICS En la primera, guardo el nombre del anime ...
  #1 (permalink)  
Antiguo 17/06/2003, 15:43
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
Problema con añadir registro...

... Veamos, tengo un sistema de TABLAS... y entonces, para una seccion, uso dos tablas:
LYRICS_ANIME
LYRICS_LYRICS

En la primera, guardo el nombre del anime y la ID, y en la segunda, guardo la lyric, etc, y ademas, la ID del anime a la que pertenece...

Sin embargo, se me presenta un problema si dos usuarios intentan añadir un nuevo anime a la vez. El codigo qu tengo preparado para eso es esto:
Código:
    strSQL2 = "SELECT ANIME_ID FROM LYRICS_ANIME ORDER BY ID DESC"
     Set MR2 = MyMensConn.Execute(strSQL2)
      txtNewID = MR2("ANIME_ID") + 1

[ html para poner las tablas ... ]
Luego, la pagina que recibe los datos y los guarda:
Código:
   txtUserID = session("usrID")
   txtNewID = Request.Form("la_id")
   txtNewName = Request.Form("el_nombre")
   txtLyric = Request.Form("lyric")
   txtTitu = Request.Form("titulo")

    strSQL1 = "SELECT * FROM LYRICS_ANIME"
    Set MR = Server.CreateObject("ADODB.Recordset")
     MR.Open strSQL1, MyMensConn, 2, 3
      MR.AddNew
       MR("ANIME_ID") = txtNewID
       MR("ANIME_ANIME") = txtNewName
      MR.Update
     strSQL2 = "SELECT * FROM LYRICS_LYRICS"
    Set MR2 = Server.CreateObject("ADODB.Recordset")
      MR2.Open strSQL2, MyMensConn, 2, 3
       MR2.AddNew
        MR2("ANIME_ID") = txtNewID
        MR2("AUTOR_ID") = txtUserID
        MR2("LYRIC_TIT") = HTMLEncode(txtTitu)
        MR2("LYRIC_LYRIC") = replace(txtLyric, vbCrLf, "<br>")
'        MR2("FUENTE") = txtFuente
       MR2.Update
response.write ("Correctamente realizado<br>")
Entonces, si por ejemplo un usuario esta añadiendo un nuevo anime, y en ese instante, otro usuario hace lo mismo, como nadie ha actualizado la DB aun, se les asigna a los dos el mismo ID de anime... lo cual me genera que las posteriores lyrics aparezcan solo en uno de los dos...

¿Como podria hacer para que no se me duplicasen asi las ID?

Una idea, por favor!!
__________________
Tu portal de manga y anime.
  #2 (permalink)  
Antiguo 17/06/2003, 16:32
Avatar de Xtasys  
Fecha de Ingreso: junio-2003
Mensajes: 25
Antigüedad: 21 años, 10 meses
Puntos: 0
Exclamación

Por lo que veo, estas seleccionando la nueva ID una pagina antes de insertar los datos, y en mi opinion es aquí donde recae el problema. Lo que deberias hacer es que, en la misma pagina en que insertas los datos selecciones la nueva id,el id no es un dato que debe ingresar el usuario asi que tu lo puedes elegir cuando tu quieras y despues que hayas añadido el registro le avisas al usuario que su anime se añadio con el id que seleccionaste

Código:
txtUserID = session("usrID")
txtNewName = Request.Form("el_nombre")
txtLyric = Request.Form("lyric")
txtTitu = Request.Form("titulo")

strSQL2 = "SELECT ANIME_ID FROM LYRICS_ANIME ORDER BY ID DESC"
Set MR2 = MyMensConn.Execute(strSQL2)
txtNewID = MR2("ANIME_ID") + 1

strSQL1 = "SELECT * FROM LYRICS_ANIME"
Set MR = Server.CreateObject("ADODB.Recordset")
MR.Open strSQL1, MyMensConn, 2, 3
MR.AddNew
MR("ANIME_ID") = txtNewID
MR("ANIME_ANIME") = txtNewName
MR.Update
strSQL2 = "SELECT * FROM LYRICS_LYRICS"
Set MR2 = Server.CreateObject("ADODB.Recordset")
MR2.Open strSQL2, MyMensConn, 2, 3
MR2.AddNew
MR2("ANIME_ID") = txtNewID
MR2("AUTOR_ID") = txtUserID
MR2("LYRIC_TIT") = HTMLEncode(txtTitu)
MR2("LYRIC_LYRIC") = replace(txtLyric, vbCrLf, "<br>")
'        MR2("FUENTE") = txtFuente
MR2.Update
response.write ("Correctamente realizado<br>")
response.write ("su Anime quedo Registrador con id : " & txtNewID & " <br>")
Saludos
Xtasys
__________________
-----------------------------------------------
X t a s y s
Is On Ur Blood
Greetz to Systat!!
------------------------------------------------
  #3 (permalink)  
Antiguo 17/06/2003, 18:58
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 2 meses
Puntos: 1
Define el campo como autonumerico , el motor JET se encarga de asignarlo en el hipotetico caso de que ambos usuarios pulsen el boton añadir a la vez y los datos lleguen juntos.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
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 03:00.