Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2011
Diana Carolina Diana Carolina is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 30
Poder: 0
Diana Carolina Va por buen camino
Hola

Hice las siguientes pruebas y anexo los resultados.

Deje esta parte igual.

Código Delphi [-]
procedure TFrmMenuCliente.ClientesClick(Sender: TObject);
begin
  Try
    if Application.FindComponent('FrmClientes') = nil then
       FrmClientes := TFrmClientes.Create(Owner);
    Permisos(FrmClientes.Tag);
    PermisosBotones(FrmClientes.spbAdicionar,FrmClientes.spbModificar,nil,FrmClientes.spbAceptar);
    FrmClientes.ShowModal;
  finally
    FrmClientes.Free;
  end;
end;

Cambie esta parte. Comentarie el Action := caFree.

Código Delphi [-]
procedure TFrmClientes.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
//spbcancelar.OnClick(nil);

  QryConsulta.Close;
  //desactivas las consultas que utilizan las vistas
  QryLmTipCl.Close;
  QryLmFinan.Close;
  QryLmSectorDian.Close;
  QryLmAecon.Close;
  QryGnDivip.Close;
  QryLmRegim.Close;
  QryLmTipCu.Close;
  QryOmEmiso.Close;
  QryLmPjRep.Close;
  QrySegmClie1.Close;
  QrySegmClie2.Close;
  QrySegmClie3.Close;
  QrySegmCanal1.Close;
  QrySegmCanal2.Close;
  QrySegmCanal3.Close;
  //consultas que se utilizan en los combos
  QryLmTipIden.Close;

//  Action := caFree; //Linea Comentariada para la prueba. 
end;

Resultado : Access Violation.

Prueba 2

Comentarié el Try

Código Delphi [-]
procedure TFrmMenuCliente.ClientesClick(Sender: TObject);
begin
//  Try
    if Application.FindComponent('FrmClientes') = nil then
       FrmClientes := TFrmClientes.Create(Owner);
    Permisos(FrmClientes.Tag);
    PermisosBotones(FrmClientes.spbAdicionar,FrmClientes.spbModificar,nil,FrmClientes.spbAceptar);
    FrmClientes.Show;
//  finally
//    FrmClientes.Free;
//  end;
end;

Esta parte la deje en su version original.

Código Delphi [-]
procedure TFrmClientes.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
//spbcancelar.OnClick(nil);

  QryConsulta.Close;
  //desactivas las consultas que utilizan las vistas
  QryLmTipCl.Close;
  QryLmFinan.Close;
  QryLmSectorDian.Close;
  QryLmAecon.Close;
  QryGnDivip.Close;
  QryLmRegim.Close;
  QryLmTipCu.Close;
  QryOmEmiso.Close;
  QryLmPjRep.Close;
  QrySegmClie1.Close;
  QrySegmClie2.Close;
  QrySegmClie3.Close;
  QrySegmCanal1.Close;
  QrySegmCanal2.Close;
  QrySegmCanal3.Close;
  //consultas que se utilizan en los combos
  QryLmTipIden.Close;

  Action := caFree;
end;

Resultado : Access Violation

Prueba 3

Código Delphi [-]
procedure TFrmMenuCliente.ClientesClick(Sender: TObject);
begin
  Try
    if Application.FindComponent('FrmClientes') = nil then
       FrmClientes := TFrmClientes.Create(Owner);
    Permisos(FrmClientes.Tag);
    PermisosBotones(FrmClientes.spbAdicionar,FrmClientes.spbModificar,nil,FrmClientes.spbAceptar);
    FrmClientes.ShowModal;
  finally
    FrmClientes.Close; //Cambie el Free por Close.
  end;
end;

Quite el caFree.

Código Delphi [-]
procedure TFrmClientes.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
//spbcancelar.OnClick(nil);

  QryConsulta.Close;
  //desactivas las consultas que utilizan las vistas
  QryLmTipCl.Close;
  QryLmFinan.Close;
  QryLmSectorDian.Close;
  QryLmAecon.Close;
  QryGnDivip.Close;
  QryLmRegim.Close;
  QryLmTipCu.Close;
  QryOmEmiso.Close;
  QryLmPjRep.Close;
  QrySegmClie1.Close;
  QrySegmClie2.Close;
  QrySegmClie3.Close;
  QrySegmCanal1.Close;
  QrySegmCanal2.Close;
  QrySegmCanal3.Close;
  //consultas que se utilizan en los combos
  QryLmTipIden.Close;

//  Action := caFree; //Quite el caFree
end;

Resultado : Al cerrar FrmClientes no me sale Access Violation, pero si vuelvo y lo abro e intento registrar otro cliente me sale el error QryConsulta: Cannot perform this operation on a closed dataset. Cuando cierro el formulario principal FrmMenuCliente, me dice que provoco un error y debe cerrarse y despues me despliega el Access Violation. Osea que se cambia el error de un formulario a otro. y el problema es que no me deja crear o editar un nuevo cliente.

Prueba 4

Agregue Close despues del Free

Código Delphi [-]
procedure TFrmMenuCliente.ClientesClick(Sender: TObject);
begin
  Try
    if Application.FindComponent('FrmClientes') = nil then
       FrmClientes := TFrmClientes.Create(Owner);
    Permisos(FrmClientes.Tag);
    PermisosBotones(FrmClientes.spbAdicionar,FrmClientes.spbModificar,nil,FrmClientes.spbAceptar);
    FrmClientes.ShowModal;
  finally
    FrmClientes.Free;
    FrmClientes.Close; //Agregué esta linea. 
  end;
end;

Quite el caFree

Código Delphi [-]
procedure TFrmClientes.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
//spbcancelar.OnClick(nil);

  QryConsulta.Close;
  //desactivas las consultas que utilizan las vistas
  QryLmTipCl.Close;
  QryLmFinan.Close;
  QryLmSectorDian.Close;
  QryLmAecon.Close;
  QryGnDivip.Close;
  QryLmRegim.Close;
  QryLmTipCu.Close;
  QryOmEmiso.Close;
  QryLmPjRep.Close;
  QrySegmClie1.Close;
  QrySegmClie2.Close;
  QrySegmClie3.Close;
  QrySegmCanal1.Close;
  QrySegmCanal2.Close;
  QrySegmCanal3.Close;
  //consultas que se utilizan en los combos
  QryLmTipIden.Close;

//  Action := caFree; //Quite esta Linea
end;

Resultado : Access Violation.

Bueno parece que es mas complicado de lo que parece.

Ahi les dejo las 4 pruebas que realice sin exito.

Quedo atenta a sus comentarios.

Gracias.
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
Problemas con el MasterSource en un ClientDataset ygkw Conexión con bases de datos 2 05-03-2015 22:59:59
Problemas Con El Clientdataset Y Tztable foxito Conexión con bases de datos 4 24-11-2008 17:38:37
Problemas con clientdataset y limit Edgtho Conexión con bases de datos 11 02-06-2008 08:32:58
Problemas con Clientdataset.Open; jmlifi Varios 1 16-11-2006 13:51:13
Problemas con DBExpress - ClientDataset argami Conexión con bases de datos 4 26-07-2004 11:21:12


La franja horaria es GMT +2. Ahora son las 22:18:52.


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