Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2011
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Es correcto esta excepción?

Estimados Sres Tengo este formulario el cual utilizo Firebird y el componente DBExpress el cual tambien tengo DataSet, el proveedor y su respectivo DataSource

sin embargo en Firebird tengo en la tabla lo siguiente:

Código SQL [-]
ALTER TABLE CLIENTES ADD CONSTRAINT UQ_CLIENTES UNIQUE (CEDULA);
esto para evitar duplicidad de registro en el campo Cédula.

Sin embargo en delphi para manejar la excepcion que me manda tengo esto en el Boton de Guardar

Código Delphi [-]
procedure TfrmCliente.btnGuardarClick(Sender: TObject);
begin
  try
    dmAcceso.cdsClientesPAIS.Value := cbexPais.text;
    dmAcceso.cdsClientes.Post;
    dmAcceso.cdsClientes.ApplyUpdates(0);
    cbexPais.text := 'Otro';
  except
    on E:Exception do // error DBExpress
    begin
      ShowMessage(#13+E.Message);
    end;
end;
  if Application.MessageBox('¿Desea Agregar Otro?', 'Confirmación',
    MB_ICONQUESTION OR MB_YESNO) = ID_NO then
  begin
    frmPrincipal.CerrarPestana;
  end
  else
  Begin
    dmAcceso.cdsClientes.Active := False;
    dmAcceso.cdsClientes.Active := True;
    dmAcceso.cdsClientes.Last;
    dmAcceso.cdsClientes.Insert;
  end;
 end;

Lo malo es que no me maneja la excepcion no se en que estaré fallando

si tienen alguna idea que error cometa favor espero sus respuestas...


Saludos

novato_erick
Responder Con Cita
  #2  
Antiguo 11-12-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que yo sepa la excepción es para devolver la tabla a su estado anterior a la ultima operacion:
Código Delphi [-]
procedure TfrmCliente.btnGuardarClick(Sender: TObject);
begin
  try
    dmAcceso.cdsClientesPAIS.Value := cbexPais.text;
    dmAcceso.cdsClientes.Post;
    dmAcceso.cdsClientes.ApplyUpdates(0);
    cbexPais.text := 'Otro';
  except
    on E:Exception do // error DBExpress
    begin
      dmAcceso.IBTransaction1.RollbackRetaining;
      ShowMessage(#13+E.Message);
    end;
end;
  if Application.MessageBox('¿Desea Agregar Otro?', 'Confirmación',
    MB_ICONQUESTION OR MB_YESNO) = ID_NO then
  begin
    frmPrincipal.CerrarPestana;
  end
  else
  Begin
    dmAcceso.cdsClientes.Active := False;
    dmAcceso.cdsClientes.Active := True;
    dmAcceso.cdsClientes.Last;
    dmAcceso.cdsClientes.Insert;
  end;
 end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 12-12-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Aquí mismo hay varios textos y ejemplos sobre ApplyUpdates que pueden ayudar a esclarecer el problema, como los siguientes:

http://www.clubdelphi.com/foros/show...523#post419523

http://www.clubdelphi.com/foros/showthread.php?t=47497

El segundo ya tiene algunos años (me desconozco un poco).

Ya nos dirás, Erick, si lograste salir del apuro.

Saludos.
Responder Con Cita
  #4  
Antiguo 15-12-2011
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Pues un error

Bueno leyendo un poco de todo lo que logre entender 'Creo' que de alguna manera utilizando el Evento OnReconcileError del Componente ClientDataSet del DBExpress puedo manejar las excepciones.

Mando mi código:

Código Delphi [-]

procedure TdmAcceso.cdsClientesReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction);
var
Result: Boolean;
begin
 cdsClientes.Post;

  If cdsClientes.ApplyUpdates (0) = 0 Then
  Begin
    dmCONEXION.sqlDB.CommitFreeAndNil(cdsClientes);
    Result := True;  // El registro se aplicó sin problemas
  End
  Else
  Begin
    dmCONEXION.sqlDB.RollbackFreeAndNil(cdsClientes);
    Result := False;  // Algo salió mal al intentar aplicar el registro
  End;
end;

el problema que me dice: [DCC Error] acceso.pas(232): E2033 Types of actual and formal var parameters must be identical

que hice mal?


Saludos

novato_erick
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que significa esta excepción Invalid pointer operation JerS Varios 3 03-05-2011 01:57:33
Es correcto esta consulta con tres Tablas? enecumene SQL 3 11-09-2007 10:28:54
Uso correcto de TFrame jars OOP 4 03-08-2005 16:18:00
¡Parametro no correcto! Ana Cristina Varios 3 14-05-2004 21:31:17
DDE , es lo correcto? nicocer Varios 4 31-10-2003 08:09:18


La franja horaria es GMT +2. Ahora son las 18:39:20.


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