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

INSERT INTO lo hace dos veces

Estas en el tema de INSERT INTO lo hace dos veces en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo un form me diante el cual el usuario introduce una serie de datos en un bbdd, el problema que tengo es ...
  #1 (permalink)  
Antiguo 20/07/2005, 09:50
 
Fecha de Ingreso: enero-2005
Ubicación: Valencia
Mensajes: 66
Antigüedad: 20 años, 3 meses
Puntos: 0
INSERT INTO lo hace dos veces

Hola a todos, tengo un form me diante el cual el usuario introduce una serie de datos en un bbdd, el problema que tengo es que cuando pincho un botón que es Registrar me hace dos veces el INSERT. En teoría lo que tiene que hacer es tras pulsar el INSERT introducir en la tabla correspondiente 7 registros, pero en vez de hacer esto me mete 14 registros, me los duplica.
Código:

<%if ((request.form("txtDesde") <>"") and (request.Form("txtHasta")<>"")) then
Set adoConexion = Server.CreateObject("ADODB.Connection")
DSNName = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="
DSNName = DSNName & Server.MapPath("../bbdd/parte_semanal.mdb")
adoConexion.Open DSNName
sempleado = request.Form("txtCempleado")
m = 1
n = 1
Do While n < 8
sDia = request.Form("txtDia"&n&"")
sProy = request.Form("selNproy"&n&"")
sCod = request.Form("selCod1"&n&"")
sDietas = request.Form("txtDietas"&n&"")
sKm = request.Form("txtKm"&n&"")
sImpkm = request.Form("txtImpkm"&n&"")
sOtros = request.Form("txtOtros"&n&"")
miConsulta = "INSERT INTO registro (id,dia,n_proyecto,codigo,dietas,km,euros,otros,id _empleado)"
miConsulta = miConsulta & " VALUES ('"&m&"','"&sDia&"','"&sProy&"','"&sCod&"','"&sDie tas&"','"&sKm&"','"&sImpkm&"','"&sOtros&"','895')"
Set rs = adoConexion.execute(miConsulta)

m = m+1
n = n+1
Loop
adoConexion.Close()
adoConexion = null
end if%>
  #2 (permalink)  
Antiguo 20/07/2005, 10:58
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
Hubo un post hace un tiempo sobre un error igual a éste que sólo lo provocaba si el navegador era IE para Mac(creo recordar). Utiliza el buscador, ya que tampoco me acuerdo si al final se resolvió.

Y un par de anotaciones:
Set rs = adoConexion.execute(miConsulta)
En esta línea no es necesario que pongas SET RS, ya que no esperas valores de retorno.con que pongas
adoConexion.execute(miConsulta)
ya vale.

y otra: no es necesario que inicialices dos variables (n y m). Con n, la del contador, ya te valdría para rellenar el campo.
  #3 (permalink)  
Antiguo 20/07/2005, 11:42
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Estos post me suenan a: "Debuguen el programa por mi y diganme que le cambio"
  #4 (permalink)  
Antiguo 20/07/2005, 12:47
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
jejeje, y funcionó contigo orharo
  #5 (permalink)  
Antiguo 20/07/2005, 12:48
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
orharo está bien, lo que pasa es que la caja de texto corta la linea,
  #6 (permalink)  
Antiguo 20/07/2005, 13:08
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Igualmente, en el caso que esa parte estubiese mal en el código original, daría error de "cadena sin terminar". No duplicaría el insert porque no se efectuaría ;)
__________________
...___...
  #7 (permalink)  
Antiguo 20/07/2005, 13:13
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años
Puntos: 2
Hola!

Prueba esto...

<%
'Declarar las variables
Dim m
Dim n
%>

<%if ((request.form("txtDesde") <>"") and (request.Form("txtHasta")<>"")) then
Set adoConexion = Server.CreateObject("ADODB.Connection")
DSNName = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="
DSNName = DSNName & Server.MapPath("../bbdd/parte_semanal.mdb")
adoConexion.Open DSNName
sempleado = request.Form("txtCempleado")
m = 1
n = 1
Do While n < 8
sDia = request.Form("txtDia"&n&"")
sProy = request.Form("selNproy"&n&"")
sCod = request.Form("selCod1"&n&"")
sDietas = request.Form("txtDietas"&n&"")
sKm = request.Form("txtKm"&n&"")
sImpkm = request.Form("txtImpkm"&n&"")
sOtros = request.Form("txtOtros"&n&"")
miConsulta = "INSERT INTO registro (id,dia,n_proyecto,codigo,dietas,km,euros,otros,id _empleado)"
miConsulta = miConsulta & " VALUES ('"&m&"','"&sDia&"','"&sProy&"','"&sCod&"','"&sDie tas&"','"&sKm&"','"&sImpkm&"','"&sOtros&"','895')"
Set rs = adoConexion.execute(miConsulta)

m = m+1
n = n+1
Loop
adoConexion.Close()
adoConexion = null

Response.write "Revisa la tabla, que solo tenga 7, es probable que fuera de este codigo que pusiste haya algo que este ejecutando esta parte 2 veces"

Response.End()

end if%>

Re

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #8 (permalink)  
Antiguo 20/07/2005, 14:34
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Cierto, no había leido bien que inserta 7 veces y lo duplica.
Lo que pasa que atiendo varias cosas a la vez y se derrepente se me patina el coco . El código está bien, es probable que este repetido adoConexion.execute(miConsulta).

es todo el código o falta algún fragmento. ? Este tipo de errores suelen ser de humanos.

jajaja mejor borro lo que escribi x que me da pena jajaja
  #9 (permalink)  
Antiguo 22/10/2005, 03:44
Avatar de mmowoa  
Fecha de Ingreso: septiembre-2005
Mensajes: 20
Antigüedad: 19 años, 7 meses
Puntos: 0
Bueno, yo tengo exactamente el mismo problema. Pero haciendo pruebas como sugirieron más arriba, el problema sucede solamente utilizando el explorer, con Firefox todo va lo más bien, no se crean los insert's x 2.

Cosa mas rara... sera cuestión de algun meta tag o algo así?
  #10 (permalink)  
Antiguo 22/10/2005, 06:18
Avatar de mmowoa  
Fecha de Ingreso: septiembre-2005
Mensajes: 20
Antigüedad: 19 años, 7 meses
Puntos: 0
Bueno, me contesto solo... el problema residía con el javascript validador de los campos, q hacia un 'submit' doble. Cuestion q para quien tenga el mismo problema, pruebe deshabilitar estos validadores. Recordar no debuggear solo la página asp del proceso, sino tambien, la q contiene el formulario.

Saludos.
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 13:45.