Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2006
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql

buenos

tengo un problema con dos tablas de mysql que tienen una relacion tipo maestro/detalle, la cual al detalle es como esta:

Código PHP:
create table detalle(
det int not null,
aplicacion varchar(50),
descripcion varchar(50),
key fk_det (det)
);

ALTER TABLE detalle ADD FOREIGN KEY (DetREFERENCES equipos (equip_idON DELETE CASCADE ON UPDATE CASCADE
como se ve en el detalle no defino como primary key (det) por que no me permite ingresar datos razon por la cual cree un indice y luego una referencia foranea a mi tabla principal.
el problema comienza en que ahora que uso los clientdataset, datasetprovider con un sqlquery de los componentes dbexpress con estas dos tabla me ingresa los datos en el detalle pero si recorro al siguiente (next) registro y despues regreso me doy cuenta que se van incrementando los registros cuando en realidad por decirlo ingrese dos, los duplica, pense voy a reiniciar la pc pero no es asi me sigue pasando, alguine le ha sucedido algo parecido a esto.
Espero haberme explicado pero no entiendo por que lo hace el delphi y los clientedataset's.

gracias, no he podido enterder este comportamiento.
Responder Con Cita
  #2  
Antiguo 03-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿No debería tener la tabla "detalle" un campo que fuese la "clave primaria", que se autoincrementase y no pudiera repetirse ni ser nulo? No tendría que ver con el campo "det", que podrías utilizar para lo que te fuera menester.

Lo digo porque comentas que no puedes tener una "clave primaria" en la tabla "detalles" porque no puedes entonces añadir datos... creo que no tiene que ver una cosa con la otra. Lo que acaso no puedes tener es el campo "det" como "clave primaria", pero, nada te impide contar con un campo "ID" en la tabla "detalle", este sí, como digo, sería la "clave primaria".

Por otro lado, me parece (no estoy seguro) que si no cuentas con una "clave primaria" nada impide que puedan "duplicarse" los registros. Con una clave primaria no podrías duplicarse puesto que se produciría una "violación de la clave primaria".

¿O estoy completamente equivocado? Mira que no me extrañaría...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-09-2006 a las 14:45:42.
Responder Con Cita
  #3  
Antiguo 04-09-2006
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
miren la verdad cree una base de datos aparte solo para ver analizar el comportamiento de llevar la tabla maestra / detalle:
Código PHP:
create table detalle(
det int not null primary key,
aplicacion varchar(50),
descripcion varchar(50),
key fk_det (det)
);
y luego la llave foraneaALTER TABLE detalle ADD FOREIGN KEY (DetREFERENCES equipos (equip_idON DELETE CASCADE ON UPDATE CASCADE
al ingresar datos me da error duplicate entry '1' for key 1
ahora bien no he podido hacer como mantener en memoria los registros ingresados para hacer llaves compuestas de esta manera:
Código PHP:
create table detalle(
det int not null,
renglon int not null,
aplicacion varchar(50),
descripcion varchar(50),
primary key (detrenglon),
key fk_det (det)); 
esta tabla creada si me permite ingresar datos pero desde el delphi no he podido encontrar algo para solucionarlo.
Código PHP:
al usar esta tabla quedarian asi los regsitros:
det  renglon  aplicacion
 1     1         una cosa
 1     2         otra cosa
 2     1         una mas
 2     2         una mas del regitro 2
 2     3         y asi
... 
espero haberme explicado. gracias

Responder Con Cita
  #4  
Antiguo 05-09-2006
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
y que dicen alguna posible solucion, con las relaciones de mysql
u como lo solucionan ?

gracias club.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como saber numero de registros de una tabla usando un clientdataset? acl_gandalf Conexión con bases de datos 11 26-06-2023 20:09:19
Mover registros en ClientDataSet mglucero Conexión con bases de datos 2 14-03-2014 04:47:44
Ordenar registros de manera descendente con ClientDataSet alucardo Conexión con bases de datos 2 31-05-2006 19:27:34
Problemas para ingresar registros en Interbase 6 jordan23 Firebird e Interbase 1 22-06-2005 20:43:45
URGENTE : Mover registros desde clientdataset a ttable !!!!1 BOYCHAMP Conexión con bases de datos 1 08-09-2003 05:33:20


La franja horaria es GMT +2. Ahora son las 15:18:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi