Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2008
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
Nada...no funciona!!!

Vamos a ver...me sigo explicando:

Tengo la tabla con 3 campos:

http://www.geocities.com/antonio_garcia_web/1.bmp

Si intento hacer esto:

Código SQL [-]
INSERT INTO clientes_cuentas_bancarias (ID_Cliente,Numero_Cuenta) values ('0','100')

Me sale el siguiente error en builder c++ 6:

http://www.geocities.com/antonio_garcia_web/2.bmp

Pero si lo meto desde la BD, sin problemas:

http://www.geocities.com/antonio_garcia_web/3.bmp
__________________
Un saludo

Antonio

Última edición por alt126 fecha: 13-06-2008 a las 13:44:35.
Responder Con Cita
  #2  
Antiguo 18-06-2008
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
nadie puede orientarme un poco??

estoy haciendo la aplicacion...pero ese fallo no lo puedo dejar ahi...
__________________
Un saludo

Antonio
Responder Con Cita
  #3  
Antiguo 18-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
¿Qué usas para administrar tus bases? Poco puede deducirse de una imagen, pero da la impresión de que tienes tanto a ID_Cliente como a Numero_cuenta como llaves primarias, lo cual sería erróneo porque la unicidad la logras con la combinación de ambas y no cada una por su cuenta.

Haz una consulta

Código SQL [-]
show create table clientes_cuentas_bancarias

para obtener la definición de la tabla y pega aquí el resultado.

// Saludos
Responder Con Cita
  #4  
Antiguo 20-06-2008
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
El resultado de la consulta es:

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`),
  UNIQUE KEY `cliente_cuenta` (`ID_Cliente`,`Numero_Cuenta`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

El programa que utilizo es el navicat 8 y tambien phpadmin.

Eso es justamente lo que quiero...tener ambos dos campos como claves, para no poder repetir los 2 valores, pero si repetir valores en cada campo. Esto no se como hacerlo!!!!

GRACIAS
__________________
Un saludo

Antonio
Responder Con Cita
  #5  
Antiguo 20-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
Esto no tiene pies ni cabeza

En tu definición de tabla, ciertamente sobra un índice, puedes omitir el unique y quedarte con el primary. Aun así, no debería fallar.

Me parece raro esto:

Dices que si haces

Código SQL [-]
INSERT INTO clientes_cuentas_bancarias (ID_Cliente,Numero_Cuenta) values ('0','100')

obtienes este error:

http://www.geocities.com/antonio_garcia_web/2.bmp

Pero el mensaje del error menciona:

Cita:
Duplicate entry '0-12' for key 1
¿Cómo puede marcarte eso, si estás intentando insertar '0-100' no '0-12' y casualmente el '0-12' sí que lo tienes, al menos según se ve en

http://www.geocities.com/antonio_garcia_web/3.bmp

// Saludos
Responder Con Cita
  #6  
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
  #7  
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
Respuesta



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 11:54:33.


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