UPDATE en SQL... error!

28/10/2004 - 21:54 por Jaime | Informe spam
Hola buenas, me estais ayudando mucho y os doy las gracias por ello. Lo que
pasa es que cuando uno se inicia en esto... empieza a ver que surgen errores
y errores... Bueno , al lio!

No puedo hacer un update, porque me dice ke me dice:

The changes you requested to the table were not successful because they
would create duplicate values in the index, primary key, or relationship.
Change the data in the field or fields that contain duplicate data, remove
the index, or redefine the index to permit duplicate entries and try again.

Observen el codigo...

sql0= "select dni from cliente where dni = '" & strID_OLD & "'"
set conConexion=server.CreateObject("adodb.connection")
set rs=server.CreateObject("adodb.recordset")
sConnString="PROVIDER=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" &
Server.MapPath("../../db/clientes.mdb")
conConexion.Open(sConnString)
Rs.Open SQL0,conConexion,3,3

sql3= "update asociacion set dni='" & strID & "'"
sql1= "update cliente set dni='" & strID & "',nombre='" & strNombre &
"',apellidos='" & strApellidos & "',entidad='" & strEntidad & "',telefono='"
& strTelefono & "',email='" & stremail & "',calle='" & strNombreV &
"',tipovia='" & T_via & "',escalera='" & strescalera & "',numero='" & Intnum
& "',piso='" & strpyl & "',cp='" & strcp & "',localidad='" & strlocalidad &
"',provincia='" & strprovincia& "',pais='" & strpais & "',comentarios='"
&comentarios & "'"

conConexion.Execute(sql3)
conConexion.Execute(sql1)

Las tablas estan tienen como key...
Tabla Asociacion...Sin Key
Tabla Cliente; Key= "dni"
Tabla Proyecto; KEY="codigo_proyecto" pero no interviene aqui.

Y luego las keys estan unidas pero sin restricciones ni nada.
Uniones:

Cliente.dni -- Asociacion.dni
Proyecto.codigo_proyecto -- asociacion.codigo_proyecto

No puedo suminstrar mas datos relevantes creo.

Saludos y a ver si sabeis porke .. seguro que es una bobada enorme pero
nunca se sabe...


GRACIAS POR ADELANTADO

Preguntas similare

Leer las respuestas

#1 Sashka
28/10/2004 - 22:20 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Tu sql3 está modificando TODOS los registros de la tabla cliente con los
datos que le pasas... entre ellos el campo dni (key) todos con el mismo
dato
Me imagino que más loq ue quieres hacer el modificar el registro que
coincida con ese dni...

sql1= "update cliente set nombre='" & strNombre &
"',apellidos='" & strApellidos & "',entidad='" & strEntidad & "',telefono='"
& strTelefono & "',email='" & stremail & "',calle='" & strNombreV &
"',tipovia='" & T_via & "',escalera='" & strescalera & "',numero='" & Intnum
& "',piso='" & strpyl & "',cp='" & strcp & "',localidad='" & strlocalidad &
"',provincia='" & strprovincia& "',pais='" & strpais & "',comentarios='"
&comentarios & "' where dni='" & strID & "'"


Sashka
MS MVP Access
MCP ASP.Net

"Jaime" <jaimedominguez[arroba]zeratools[punto]com> escribió en el mensaje
news:elyD%
Mostrar la cita
#2 Matias Iacono
28/10/2004 - 22:30 | Informe spam
Bueno, a primera vista lo que noto es esto:

sql3= "update asociacion set dni='" & strID & "'"

Si no le pones una condicionante WHERE, te actualizaria todos los campos
DNI, por lo que, seguramente esta debe ser tu clave primaria en la tabla, y
al querer setear todos los campos con el mismo valor, se produce el error.

Saludos

Matias Iacono
Microsoft MVP



"Jaime" <jaimedominguez[arroba]zeratools[punto]com> wrote in message
news:elyD%
Mostrar la cita
que
Mostrar la cita
errores
Mostrar la cita
again.
Mostrar la cita
"',telefono='"
Mostrar la cita
Intnum
Mostrar la cita
&
Mostrar la cita
#3 Jaime
28/10/2004 - 23:06 | Informe spam
Pero el WHERE ya lo tengo puesto en el otro SQL con el que abro la
conexión...
Debo volverlo a poner?




"Matias Iacono" escribió en el mensaje
news:
Mostrar la cita
#4 Sashka
29/10/2004 - 02:23 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
¿? Creo que aca hay una confusión...
La conexión la abres con una cadena de conexión...
Con esa conexión puedes abrir recordsets y/o ejecutar acciones (lease
update, delete, insert) para las que no necesitas abrir un recordset. En el
código que pones, tu abres un recordset (con el sql0) que por lo que veo no
usas para nada ese recordset no está en tu conexión, sólo la usa... por
ende no tiene nada que ver con las acciones que luego (usando la misma
conexión) ejecutas (sql3 y sql1). Si no necesitas ese recordset para nada...
no lo abras (no siquiera lo declares!!). En todo caso lo que debes de
tener claro es que su where no se "pasa" a nada más que hagas a través de
esa conexión.

Sashka
MS MVP Access
MCP ASP.Net

"Jaime" <jaimedominguez[arroba]zeratools[punto]com> escribió en el mensaje
news:
Mostrar la cita
#5 Jaime
29/10/2004 - 17:53 | Informe spam
Gracias!
Respecto a lo anterior solucionado.

Ahora que ya manejo los recordset...
Hago una consulta en la que hay varios registros de ciertas tablas... como
avanzo registros de solo esa tabla?



"Sashka" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida