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%
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







Respuesta Responder a este mensaje
#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%
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







Respuesta Responder a este mensaje
#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:
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%
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











Respuesta Responder a este mensaje
#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:
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:
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%
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















Respuesta Responder a este mensaje
#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:
¡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:
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:
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%
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



















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