Como manejar duplicado ?

16/02/2007 - 20:28 por Penta | Informe spam
Estimados.
Uso SQL Server 2000 y VB.6
Tengo la tabla A
La estructura es:

ID numerico
CIUDAD varchar(30)
codigo varchar(10)

Una aplicacion VB llena la tabla A con 100.000 registro(lo importante
es que llena solo los campos ID y CIUDAD, dejando el campo codigo para
que el usuario lo llene segun planificacion.

Supongamos que tengo
ID CIUDAD codigo
1 MOSCU
2 PARIS
3 LONDRES

Como veran la tabla no tiene llave.

Ahora:
El usuario asigna al registro 1 el codigo 12345
Mediante la aplicacion VB.6 miro si ese codigo ya existe

Select codigo * from a Where codigo='12345'
Puedo actualizar en el registro:
ID Ciudad
1 MOSCU

Pues bien, hemos encontrado 30 registros repetidos x cantidad de
veces :
12345 5 veces
56565 10 veces etc.

Bueno no hay mucho que mirar en la aplicacion porque esta clarito.
Por lo tanto, no se que puede estar pasando, ahora no puedo poner como
llave el codigo ya que, en principio parten vacios.
Dos preguntas:
1.- Existe algun metodo que no sea por SQL 2000 evitar duplicidad de
registro sin tenerlo como llave ?
2.- Alguien le ha ocurrido semejante barbaridad ?? y porque se puede
deber si el codigo esta muy clarito y es imposible que pase por alto
el Select ???


Salu2.
Penta.

Preguntas similare

Leer las respuestas

#1 Isaias
16/02/2007 - 20:50 | Informe spam
Amigo Penta

Tal vez para ti este muy CLARO, eso del codigo, pero para nosotros que NO lo
hemos visto, no nos queda muy claro donde se generan los duplicados.

¿Porque no colocar el campo como INDICE UNICO?
Saludos
IIslas


"Penta" wrote:

Estimados.
Uso SQL Server 2000 y VB.6
Tengo la tabla A
La estructura es:

ID numerico
CIUDAD varchar(30)
codigo varchar(10)

Una aplicacion VB llena la tabla A con 100.000 registro(lo importante
es que llena solo los campos ID y CIUDAD, dejando el campo codigo para
que el usuario lo llene segun planificacion.

Supongamos que tengo
ID CIUDAD codigo
1 MOSCU
2 PARIS
3 LONDRES

Como veran la tabla no tiene llave.

Ahora:
El usuario asigna al registro 1 el codigo 12345
Mediante la aplicacion VB.6 miro si ese codigo ya existe

Select codigo * from a Where codigo='12345'
Puedo actualizar en el registro:
ID Ciudad
1 MOSCU

Pues bien, hemos encontrado 30 registros repetidos x cantidad de
veces :
12345 5 veces
56565 10 veces etc.

Bueno no hay mucho que mirar en la aplicacion porque esta clarito.
Por lo tanto, no se que puede estar pasando, ahora no puedo poner como
llave el codigo ya que, en principio parten vacios.
Dos preguntas:
1.- Existe algun metodo que no sea por SQL 2000 evitar duplicidad de
registro sin tenerlo como llave ?
2.- Alguien le ha ocurrido semejante barbaridad ?? y porque se puede
deber si el codigo esta muy clarito y es imposible que pase por alto
el Select ???


Salu2.
Penta.


Respuesta Responder a este mensaje
#2 Penta
16/02/2007 - 21:10 | Informe spam
Hola Isaias
Gracias por responder.
El proceso consta de 2 partes.

1.- Se generan 100.000 registros el unico dato en blanco es el campo
codigo, es por este motivo que no puedo incluirlo como unico en
conjunto con los demas campos ( o unico solo si se quiere)
2.- Luego de cargados los regsitros, los digitadores van actualizando
cada uno de ellos, lo que yo quiero es que cuando se actualice el
campo codigo no tenga repetidos. Para esto lo manejo desde la
aplicacion de la forma antes expuesta.

Select codigo from A Where codigo='1'
si no esta actualizo, si esta es porque ya existe. NO puedo hacerlo de
otra manera ya que esa tabla involucra otros procesos y no alcanzo por
tiempo.
Bueno el tema es que al manejarlo desde la aplicacion debio funcionar
100% de hecho hago pruebas y FUNCIONA !!!
Pero he encontrado 30 registros repetidos ejemplo:

Select codigo from A Where codigo='1'
Resultado 30 registros.

Vuelvo a hacer las 2 preguntas antes expuestas.

Atentamente,
Penta
Respuesta Responder a este mensaje
#3 Alejandro Mesa
16/02/2007 - 21:20 | Informe spam
Penta,

- Donde haces la comprobacion de existencia, desde tu aplicacion o desde el
procedimiento almacenado usado para hacer la actualizacion?

La mejor manera de evitar duplicados es poniendo una restriccion de unicidad
en la tabla.

alter table dbo.t1
add constraint uq_t1 unique(ID, CIUDAD, CODIGO)
go


AMB

"Penta" wrote:

Hola Isaias
Gracias por responder.
El proceso consta de 2 partes.

1.- Se generan 100.000 registros el unico dato en blanco es el campo
codigo, es por este motivo que no puedo incluirlo como unico en
conjunto con los demas campos ( o unico solo si se quiere)
2.- Luego de cargados los regsitros, los digitadores van actualizando
cada uno de ellos, lo que yo quiero es que cuando se actualice el
campo codigo no tenga repetidos. Para esto lo manejo desde la
aplicacion de la forma antes expuesta.

Select codigo from A Where codigo='1'
si no esta actualizo, si esta es porque ya existe. NO puedo hacerlo de
otra manera ya que esa tabla involucra otros procesos y no alcanzo por
tiempo.
Bueno el tema es que al manejarlo desde la aplicacion debio funcionar
100% de hecho hago pruebas y FUNCIONA !!!
Pero he encontrado 30 registros repetidos ejemplo:

Select codigo from A Where codigo='1'
Resultado 30 registros.

Vuelvo a hacer las 2 preguntas antes expuestas.

Atentamente,
Penta


Respuesta Responder a este mensaje
#4 Penta
19/02/2007 - 13:48 | Informe spam
Perfecto algo asi es lo que necesito, solo un detalle , es posible
indicarle que acepte campos en blanco o NULOS ?, ya que en primera
instancia asi debne ser.

PS.La comprobacion la realizo desde la aplicacion.

Salu2 y Gracias.
Penta.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida