Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error Violation Primary Key (https://www.clubdelphi.com/foros/showthread.php?t=9964)

maui 06-05-2004 23:04:09

Error Violation Primary Key
 
HOLA A TODOS

HICE UN MANTENEDOR DE CLIENTES CON UN PROCEDIMIENTO ALMACENADO QUE INSERTA ESTOS DATOS A LA TABLA CLIENTE, LUEGO DE INGRESAR ESTOS DATOS HAGO CLICK EN EL BOTON GUARDAR Y ME SALE EL ERROR:

"violation primary key o unique key integ_838 en la tabla cliente".

Y ESTE ES EL CODIGO QUE ESTOY UTILIZANDO EN DELPHI 6.0.

FrmManclientes.StoredProc.Params[0].AsString:= Edit1.Text;
FrmManclientes.StoredProc.Params[1].AsString:= Edit2.Text;
FrmManclientes.StoredProc.Params[2].AsString:= Edit3.Text;
FrmManclientes.StoredProc.Params[3].AsString:= Edit4.Text;
FrmManclientes.StoredProc.Params[4].AsString:= Edit5.Text;
FrmManclientes.StoredProc.Params[5].AsString:= Edit6.Text;
FrmManclientes.StoredProc.Params[6].AsString:= Edit7.Text;
FrmManclientes.StoredProc.Params[7].AsString:= Edit8.Text;
FrmManclientes.StoredProc.Params[8].AsString:= Edit9.Text;
FrmManclientes.StoredProc.Params[9].AsString:= Edit10.Text;
FrmManclientes.StoredProc.Params[10].AsString:= Edit11.Text;
FrmManclientes.StoredProc.Params[11].AsString:= Edit12.Text;
FrmManclientes.StoredProc.Params[12].AsString:= Edit13.Text;
FrmManclientes.StoredProc.Params[13].AsString:= Edit14.Text;
FrmManclientes.StoredProc.Params[14].AsString:= Edit15.Text;
FrmManclientes.StoredProc.Params[15].AsString:= Edit16.Text;
FrmManclientes.StoredProc.ExecProc;


Por favor necesito una respuesta lo antes posible.....

SALUDOS

MAUI

eduarcol 06-05-2004 23:07:03

Violation Primary Key = Registro Duplicado

Saca tus conlusiones ;)

delphi.com.ar 06-05-2004 23:07:53

Primero, es fundamental para participar en los foros leer la Guía de Estilo.

Despues de leer esto, te darás que los datos de tu pregunta, no son suficientes como para poder saber cual es el problema.

¿Sabes lo que es una violación a una clave primaria?

maui 06-05-2004 23:20:23

no creo que tenga el rut duplicado es la tabla hecha en interbase 6.0:

create table CLIENTE
(
RUT_CLIENTE CHAR(10) NOT NULL,
PRIMER_NOMBRE VARCHAR(15) NOT NULL,
SEGUNDO_NOMBRE VARCHAR(15) NOT NULL,
PRIMER_APELLIDO VARCHAR(15) NOT NULL,
SEGUNDO_APELLIDO VARCHAR(15) NOT NULL,
DIRECCION_POBLACION VARCHAR(20) NOT NULL,
DIRECCION_CALLE VARCHAR(20) NOT NULL,
DIRECCION_NUMERO VARCHAR(10) NOT NULL,
DIRECCION_DPTO VARCHAR(10) NOT NULL,
DIRECCION_COMUNA VARCHAR(15) NOT NULL,
DIRECCION_CIUDAD VARCHAR(15) NOT NULL,
GIRO VARCHAR(15) NOT NULL,
TELEFONO_FIJO VARCHAR(20) NOT NULL,
TELEFONO_CELULAR VARCHAR(20) NOT NULL,
E_MAIL VARCHAR(50) NOT NULL,
FECHA_INGRESO CHAR(10) NOT NULL,
PRIMARY KEY (RUT_CLIENTE)
);

lo otro averigue que podia ser que me falte una libreria.....

por favor espero tu respuesta amigo.

maui 06-05-2004 23:22:05

hola amigo

gracias por advertirme.

saludos y si me puedes ayudar buena onda.

sanxpue 06-05-2004 23:36:54

Pues parece
 
No te falta ninguna libreria...
por que no pones tu procedimiento almacenado..tal vez ahi este la situacion, por que nada mas pones la creacion de tu tabla y como pasas los parametros pero nunca pones como los insertas :confused:

eduarcol 06-05-2004 23:37:44

Cita:

Empezado por maui
HOLA A TODOS

HICE UN MANTENEDOR DE CLIENTES CON UN PROCEDIMIENTO ALMACENADO QUE INSERTA ESTOS DATOS A LA TABLA CLIENTE, LUEGO DE INGRESAR ESTOS DATOS HAGO CLICK EN EL BOTON GUARDAR Y ME SALE EL ERROR:

"violation primary key o unique key integ_838 en la tabla cliente".

Pues estas seguro que no serepite el RUT porq si le pasas uno cuando ya existe en la tabla el error que te da es ese

delphi.com.ar 06-05-2004 23:53:57

Lo importante es saber que es lo que estas ejecutando, sin lugar a dudas ese proceso esta intentando insertar un registro o modificando una clave principal que produce una violación de clave primaria.

Saludos!

maui 07-05-2004 00:22:13

hola amigo aca esta el procedimiento almacenado Y ASI ME COMPILO:
SET TERM !!
CREATE PROCEDURE ADD_CLIENT_INFO
(
RUT_CLIENTE CHAR(10),
PRIMER_NOMBRE VARCHAR(20),
SEGUNDO_NOMBRE VARCHAR(20),
PRIMER_APELLIDO VARCHAR(20),
SEGUNDO_APELLIDO VARCHAR(20),
DIRECCION_POBLACION VARCHAR(15),
DIRECCION_CALLE VARCHAR(10),
DIRECCION_NUMERO VARCHAR(10),
DIRECCION_DPTO VARCHAR(15),
DIRECCION_CIUDAD VARCHAR(15),
DIRECCION_COMUNA VARCHAR(15),
GIRO VARCHAR(15),
TELEFONO_FIJO VARCHAR(20),
TELEFONO_CELULAR VARCHAR(20),
E_MAIL VARCHAR(50),
FECHA_INGRESO CHAR(10)
)
AS
BEGIN
INSERT INTO CLIENTE
( RUT_CLIENTE,
PRIMER_NOMBRE,
SEGUNDO_NOMBRE,
PRIMER_APELLIDO,
SEGUNDO_APELLIDO,
DIRECCION_POBLACION,
DIRECCION_CALLE,
DIRECCION_NUMERO,
DIRECCION_DPTO,
DIRECCION_CIUDAD,
DIRECCION_COMUNA,
GIRO,
TELEFONO_FIJO,
TELEFONO_CELULAR,
E_MAIL,
FECHA_INGRESO)
VALUES(:RUT_CLIENTE,
:PRIMER_NOMBRE,
:SEGUNDO_NOMBRE,
:PRIMER_APELLIDO,
:SEGUNDO_APELLIDO,
:DIRECCION_POBLACION,
:DIRECCION_CALLE,
:DIRECCION_NUMERO,
:DIRECCION_DPTO,
:DIRECCION_CIUDAD,
:DIRECCION_COMUNA,
:GIRO,
:TELEFONO_FIJO,
:TELEFONO_CELULAR,
:E_MAIL,
:FECHA_INGRESO );
END;
!!
SET TERM;

y esta es la tabla:

CREATE TABLE CLIENTE
(
RUT_CLIENTE CHAR(10) NOT NULL,
PRIMER_NOMBRE VARCHAR(15) NOT NULL,
SEGUNDO_NOMBRE VARCHAR(15) NOT NULL,
PRIMER_APELLIDO VARCHAR(15) NOT NULL,
SEGUNDO_APELLIDO VARCHAR(15) NOT NULL,
DIRECCION_POBLACION VARCHAR(20) NOT NULL,
DIRECCION_CALLE VARCHAR(20) NOT NULL,
DIRECCION_NUMERO VARCHAR(10) NOT NULL,
DIRECCION_DPTO VARCHAR(10) NOT NULL,
DIRECCION_COMUNA VARCHAR(15) NOT NULL,
DIRECCION_CIUDAD VARCHAR(15) NOT NULL,
GIRO VARCHAR(15) NOT NULL,
TELEFONO_FIJO VARCHAR(20) NOT NULL,
TELEFONO_CELULAR VARCHAR(20) NOT NULL,
E_MAIL VARCHAR(50) NOT NULL,
FECHA_INGRESO CHAR(10),
PRIMARY KEY (RUT_CLIENTE)
);

si me falta una libreria cuales serian?

espero sus comentarios.......

eduarcol 07-05-2004 00:31:05

Para comenzar
Cita:

Empezado por maui
si me falta una libreria cuales serian?

espero sus comentarios.......

Esta es la repuesta
Cita:

Empezado por sanxpue
No te falta ninguna libreria...

El error no esta en el procedimientoalmacenado el asunto es que duplica la clave primaria, busca elnumerode rut que quieres ingresar y veras que ya existe

sanxpue 07-05-2004 02:21:22

Pues si no hay duda
 
Como dice EduarCol..

Checate se me hace que andas pasando una clave primaria repetida y si dices que no entonces has las siguiente pruebas...

Primero cambia el char por varchar en tu indice primario por que no le veo nada de malo a tu SP o si no entonces
create otra tabla, crea un generador y su trigger despues de insertar que le asigne un valor, y si te truena entonces si es el motor.. aunque lo dudo asi de mucho...

maui 07-05-2004 17:03:54

hola amigo sanxpue

tenias razon se estan duplicando los datos, y no es solamente la primary key sino todas, te cuento.... hago click una vez en el boton guardar y me guarda los datos en la tabla en blanco y luego cuando hago click la segunda vez me sale el error y me ingresa los datos.

la cosa es que no entiendo como puedo eliminar ese error, ya que he revizado por cielo, mar y tierra y no he encontrado nada.

lo otro en el formulario estoy ocupando groupbox y edit.

que podra ser?

espero tus comentarios...

y gracias por ayudarme......

delphi.com.ar 07-05-2004 17:26:54

Si insertas un nuevo cliente, este si o si tiene que tener otro ID..

seken 11-05-2004 00:11:46

Insertar un nuevo Registro
 
estimados....
ya qu estan tratando el tema de insertar un nuevo registro, me gustraía saber si hay una fucioón que me agrege un reguistro igual al que estoy seleccionando en una tabla. En dicha tabla tengo un campo llamado "codigointerno" que es Autoincrementable (+). ¿existe dicha fucnión?
muchas gracias

;)

delphi.com.ar 11-05-2004 02:57:59

Puedes hacer un insert de un select:
Código SQL [-]
INSERT INTO TABLA (DESCRIPCION, IMPORTE)
SELECT DESCRIPCION, IMPORTE
WHERE ID = :IdRegAnt

seken 11-05-2004 13:40:50

y como hago para copiar????
 
gracias por la respuesta, pero me gustaria saber como puedo copiar un registro de una tabla a otra que tenga la misma estructura. Porque tengo una tabla con 85 atributos, y quiero copiar rapidamnete un regiustro. Ademas tengo otras 5 tablas que tienen que hacer lo mismo.

una duda, si armo un SQL como el que me pasas, con solo Ejecutarlo ya me inserta el registro???
saludos y disculpa por mi ignorancia de principiante

delphi.com.ar 11-05-2004 15:49:46

El INSERT te insertará los registros que retorne el SELECT, puede ser uno, ninguno o N...
Te recomiendo buscar algún manual de SQL, ya que se trata de una herramienta terriblemente útil y sencilla.

Saludos!


La franja horaria es GMT +2. Ahora son las 11:38:42.

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