Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
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.-
Responder Con Cita
  #2  
Antiguo 31-05-2004
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
"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
Responder Con Cita
  #3  
Antiguo 31-05-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 31-05-2004
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
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
Responder Con Cita
  #5  
Antiguo 31-05-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
es verdad se me había olvidado je je je
Responder Con Cita
  #6  
Antiguo 31-05-2004
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 22
CHiCoLiTa Va por buen camino
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;
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


La franja horaria es GMT +2. Ahora son las 18:17:02.


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