Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/01/2013, 14:49
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: Como hacer para que al insertar los registros primary key que se encuentra

Cita:
Codigo_Cliente Nombre Direccion Vendedor producto
1a leandro argentina carlos peras
1a leandro argentina jose manzanas
1b juan peru carlos manzanas
1a leandro argentina carlos uvas

Ahora supongamos que este sea el archivo excel, como ves el cod_cliente para leandro se repite en varias ocasiones, si importo este archivo al datagrid se vera de igual manera y al hacer el insert into a la tabla cliente almacenara el primer registro con exito pero cuado toque guardar el segundo registro me dara el error de que el cod_cliente ya esta registrado y no almacenara lo demas, lo que quiero es que en el segundo registro asi el cod_cliente este repetido este lo ignore y guarde los demas campos en la BD...
El problema que tienes es que una tabla en Excel de semejantes características no sirve para realizar altas de una tabla base. No sirve porque precisamente esa tabla muestra redundancia perniciosa de datos, la cual se origina en que los datos de la misma componen un reporte... y un reporte no es fuente de datos para la base si no se hace un procesamiento previo.
Lo que debes hacer es diseñar un proceso tal que realice la extracción de los datos desde el archivo en Excel, y que vaya incorporando los datos extraídos en sus tablas destino, en el orden correcto y guardando los datos ya normalizados.
Desde ya que no existe una consulta que pueda hacer eso. Como mucho se debe diseñar por medio de stored procedures, pero no es una tarea simple.
Ahora bien, el hecho de que tengas problemas de unicidad de Pk en un contexto parecido a ese a mi me sugiere que el diseño de la tabla pueda ser incorrecto en alguna forma.
Me explico: Una tabla que almacene reportes, no puede jamás darte error de clave duplicada, a menos que la clave esté mal diseñada, y que incorpore cosas que no están correctamente analizadas. Eso sería porque un reporte es una tabla de datos ya consolidados, y el único identificador que poseen es el ID de cada línea. Pero no otros.
Lo que si pueden tener son FK que apunten a las tablas origen de datos con las que se relacionan (Empresa, Cliente, Documento, etc.), pero siendo relaciones 1:N, no deberían generar ese inconveniente.
Distinto es si intentas tomar los datos de la Empresa desde un reporte. Es obvio que habrá repetición de la PK, porque ese dato tiene cardinalidad N. En ese caso primero tienes que seleccionar los distintos para poder ingresarlos en la tabla base.
Pero tienes que tener en cuenta que todas esas extracciones de datos deben ser previas a cualquier ingreso de datos consolidados (reporte), o de lo contrario se pueden generar inconsistencias no detectadas.tes)
¿Se va entendiendo el problema a resolver?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)