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 al grabar (https://www.clubdelphi.com/foros/showthread.php?t=10857)

silviodp 31-05-2004 15:36:18

Error al grabar
 
Estoy haciendo una aplicacion en Delphi 5, con tabals Paradox 7, utilizo del BDE.
Y cuando hago un Post en una tabla me da error "Key violation", que tipo de error es ese?
Este es la parte del codigo donde me da ese error:
Código:

procedure TForm16.GrabarClick(Sender: TObject);
begin
 ModuloDatos.TblDetproducto.Post;
 Form4.Modificar.Enabled:=True;
 Form4.Quitar.Enabled:=True;
 Close;
end;

Gracias, saludos.

Silvio.-

roman 31-05-2004 15:47:06

"Key Violation" significa que el registro que estás insertando tiene la misma llave que otro ya existente. Deberás verificar que no exista previamente un registro con la misma llave o simplemente "dejar que corra" el error para así informar al usuario que está agregando un registro ya existente y cancelar la inserción.

// Saludos

tcp_ip_es 31-05-2004 16:43:10

No estaría de más que comprobases el estado de la tabla antes de grabar, para ver si esta en modo edición, sino no puedes hacer el post.

Código Delphi [-]
if ModuloDatos.TblDetproducto.state = dsedit then
 ModuloDatos.TblDetproducto.post

en lo demás estoy totalmente de acuerdo con Roman.

Saludos, Tony

roman 31-05-2004 16:49:35

Cita:

Empezado por tcp_ip_es
Código Delphi [-]
if ModuloDatos.TblDetproducto.state = dsedit then
 ModuloDatos.TblDetproducto.post

Ya entrados en gastos yo añadiría:


Código Delphi [-]
if 
  (ModuloDatos.TblDetproducto.state = dsedit) or
  (ModuloDatos.TblDetproducto.state = dsinsert)
then
  ModuloDatos.TblDetproducto.post

// Saludos

tcp_ip_es 31-05-2004 16:57:41

es verdad se me había olvidado ;) je je je

CHiCoLiTa 31-05-2004 17:52:34

Ya que nos ponemos a dejarlo bonito, vamos a controlar los estados de los botones como es debido

Código Delphi [-]
procedure TModuloDatos.TblDetproductoDataChange(Sender: TObject;
  Field: TField);
begin
     if (TblDetproducto.state = dsedit) or
        (TblDetproducto.state = dsinsert) then
     begin
          Form4.Modificar.Enabled := True;
     end
     else
     begin
          if Assigned (Form4) then
          begin
               Form4.Modificar.Enabled := False;
          end;
     end;
end;


La franja horaria es GMT +2. Ahora son las 11:36:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi