PDA

Ver la Versión Completa : registros duplicados


kryna
07-04-2005, 16:32:43
hola amigos

mi problema es el siguiente.. quiero que al ingresar un registro en el sistema no me permita incluir codigos que ya esten incluidos.. osea si trato de inculir un registro cuyo codigo ya se encuente en el sistema me envie un mensage de erros que el registro ya esta en el sistema...

estoy trabajando en delphi y con gestor paradox

este es el codigo que estoy utilizando

encontrado := false;

while (not encontrado) do
begin
if td1.cod1 = clave2 then
encontrado:=true;
end;
if not encontrado then
showmessage ('el registro ya existe')
else
begin
Tb1.Insert;
Tb1.FieldByName('cod1').AsString := Clave;
Tb1.FieldByName('cod2').AsString := clave2;
Tb1.Post;
Tb1.Next;
Tb1.FlushBuffers;
Tb1Close;

Tb2.Insert;
Tb2.FieldByName('cod2').AsString := Clave2;
Tb2.FieldByName('des').AsString := clave4;
Tb2.post;
Tb2.Next;
Tb2.FlushBuffers;
Tb2.Close;

ShowMessage('LOS DATOS FUERON GRABADOS SATISFACTORIAMENTE!!');
end

Investment
07-04-2005, 16:47:25
//EVITAR DUPLICADOS
if Tb1.locate('Cod1',Clave,[locaseinsensitive]) then
ShowMessage('Ya existe la clave')
else
if Tb2.locate('Cod1',Clave2,[locaseinsensitive]) then
ShowMessage('Ya existe la clave2')
else
begin
Tb1.Insert;
Tb1.FieldByName('cod1').AsString := Clave;
Tb1.FieldByName('cod2').AsString := clave2;
Tb1.Post;
Tb1.Next;
Tb1.FlushBuffers;
Tb1Close;

Tb2.Insert;
Tb2.FieldByName('cod2').AsString := Clave2;
Tb2.FieldByName('des').AsString := clave4;
Tb2.post;
Tb2.Next;
Tb2.FlushBuffers;
Tb2.Close;

ShowMessage('LOS DATOS FUERON GRABADOS SATISFACTORIAMENTE!!');
end;

fidel
07-04-2005, 23:15:12
Hola:

Perdonad que me meta, pero es un asunto que me interesa.

Esto para la opción insertar nuevo registro funcionaría bien, pero si tenemos que modificar un registro y después de entrar a modificar lo dejamos como estaba y aceptamos nos daría el mensaje de 'La clave ya existe' .

Yo lo he solucionado de una manera un poco peculiar que no me gusta mucho y quería conocer alguna otra forma de hacer esto.

Un saludo.

Lepe
08-04-2005, 09:33:07
El campo que actua como clave principal no puede, ni debe ser editado por el usuario, por tanto, en las modificaciones es imposible que de fallo de violación de clave.

Por otra parte, y volviendo al tema original del hilo, lo que hace Investment o kryna es totalmente correcto, pero hay otro método más, y quizás más eficiente.Consiste en dejar al motor de bases de datos toda la operación.

Violacion de clave única en paradox (http://www.clubdelphi.com/foros/showthread.php?t=4040&highlight=ekeyviol)
tambien puedes buscar en el foro por Abort.

Un saludo