![]() |
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 |
Violation Primary Key = Registro Duplicado
Saca tus conlusiones ;) |
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? |
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. |
hola amigo
gracias por advertirme. saludos y si me puedes ayudar buena onda. |
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: |
Cita:
|
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! |
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....... |
Para comenzar
Cita:
Cita:
|
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... |
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...... |
Si insertas un nuevo cliente, este si o si tiene que tener otro ID..
|
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 ;) |
Puedes hacer un insert de un select:
|
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 |
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 03:47:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi