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 25-06-2008
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
no no no...quizas es que estuve haciendo pruebas...y puse fotos de una prueba y comente un ejemplo de otra.

En la tabla tengo:

Código SQL [-]
CREATE TABLE `clientes_cuentas_bancarias` (
  `ID_Cliente` int(4) NOT NULL,
  `Numero_Cuenta` varchar(23) NOT NULL default '' COMMENT 'Nº cuenta bancaria',
  `Banco` varchar(30) default NULL COMMENT 'Nombre del banco',
  PRIMARY KEY  (`ID_Cliente`,`Numero_Cuenta`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1


aqui puedes ver todo el proceso -> video

Gracias por intentar ayudarme...es algo que necesito que funcione y no se como hacerlo!!
__________________
Un saludo

Antonio
Responder Con Cita
  #2  
Antiguo 25-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola alt126, por lo que he visto estas intentando ejecutar dos veces tu insert.

Código Delphi [-]
 BD->qOperaciones->SQL->ADD("INSERT.......")
 .......
 .......
 BD->qOperaciones->ExecSQL(); //con esta instrucción ya has registrado
 BD->qOperaciones->Active=true; //aqui como no has limpiado lo que tienes dentro de SQL, intenta volver a registrar, pero como
                          //ya esta te sale el error, porque los dos campos son llaves primarias y no puede haber repetidos.

como te dice Roman, si pones a los dos campos como primary key, no podras tener un registro que tenga un cliente y cuenta bancaria repetidos y en tu codigo estas haciendo eso, registras el mismo cliente y una misma cuenta para ese cliente.

Yo veo una relación de 1 a muchos entre tu tabla clientes y cuentas bancarias, donde el id_cliente de tu tabla cuenta bancaria llegaría a ser una llave foranea (foreing key), ahora también dices que pueden repetirse las cuentas bancarias, si es así, entonces es una relación muchos a muchos, ahí necesitas una tabla intermedia entre tu tabla clientes y cuentas bancarias en dicha tabla id_cliente, cuenta_bancaria, seran tus llaves foraneas.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 26-06-2008
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
Lo que decias es completamente cierto...y ya esta solucionado.

No sabia que
Cita:
tTable->Active = true;
hace la consulta otra vez despues de insert. Pensaba que era solamente para activar o no la consulta.

Lo he probado y funciona perfectamente.

Sobre la BD, la idea es que un mismo cliente puede tener varias cuentas de banco, es decir que en la misma tabla puede aparecer varias veces el mismo cliente, por lo que no se puede poner solo el cliente como key, tiene que ser la combinacion de cliente y cuenta...eso si que no se repite.

No creo necesitar una tabla intermedia, ya que tengo una tabla clientes y luego esta tabla que es la que guarda las cuentas de cada cliente.

En access lo tenia asi y funcionaba, pero aqui me daba problemas supongo que por el active=true.

Gracias...por ahora todo correcto
__________________
Un saludo

Antonio
Responder Con Cita
  #4  
Antiguo 26-06-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por alt126 Ver Mensaje
No sabia que
Cita:
tTable->Active = true;
hace la consulta otra vez despues de insert. Pensaba que era solamente para activar o no la consulta.
Para que no te tome desprevenido en un futuro, te comento que Active se usa para consultas SQL que regresan registros (típicamente un SELECT), mientras que ExecSQL se usa para consultas que no regresan registros (como INSERT, DELETE y UPDATE).

// Saludos
Responder Con Cita
  #5  
Antiguo 27-06-2008
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
Gracias por la info!!!
__________________
Un saludo

Antonio
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
hot keys alfil123 OOP 3 25-04-2007 01:50:16
Sending Keys Xianto API de Windows 0 13-07-2006 10:00:32
Códigos escape y virtual Keys Codes Cabanyaler API de Windows 2 05-06-2006 16:13:13
Foreign keys desactivadas JCDiaz999 Firebird e Interbase 2 31-05-2006 13:09:16
Duda acerca de las keys joanajj Firebird e Interbase 5 20-05-2006 21:23:28


La franja horaria es GMT +2. Ahora son las 17:44:25.


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