Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2015
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
FindComponent en Unidades .pas

Hola a tod@s


la situación que se me presenta en la día de hoy es la siguiente:

Cree una unidad .pas en la cual deseo manejar el acceso y manejo de los datos de un app, en orden de ideas cree esta unidad

Código Delphi [-]
unit UCoreBD;

interface

  uses DBClient,Provider, ADODB, Dialogs, SysUtils, Classes,
  
//CS
UDMModuloDatosBD;

// Funciones de la BD
function getClientDataset(pName : string;  pParent : Tcomponent ; pSql : String) : TClientDataSet;
procedure liberarClientDataset(pClientDataset : TClientDataSet ; pParent : Tcomponent);


implementation


function getClientDataset(pName : string;  pParent : Tcomponent ; pSql : String) : TClientDataSet;
var qConsulta_temporal: TADOQuery;
    dsProvedir_temporal : TDataSetProvider;
    cds_temporal : TClientDataSet;
begin
  Result:= nil;
  qConsulta_temporal:= nil;
  dsProvedir_temporal:= nil;
  try
    qConsulta_temporal:= TADOQuery.Create(nil);
    qConsulta_temporal.ConnectionString:= UDMModuloDatosBD.getConexion.ConnectionString;
    qConsulta_temporal.SQL.Text:= pSql;
    qConsulta_temporal.Open;

    dsProvedir_temporal:= TDataSetProvider.Create(pParent);
    dsProvedir_temporal.DataSet:= qConsulta_temporal;
    dsProvedir_temporal.Name:= 'DSP_' + pName ;

    cds_temporal := TClientDataset.Create(pParent);
    cds_temporal.ProviderName:= dsProvedir_temporal.Name;
    cds_temporal.Name:= pName;
    cds_temporal.PacketRecords:= -1;
    cds_temporal.open;
    Result:= cds_temporal;
  except
  end;
end;

procedure liberarClientDataset(pClientDataset : TClientDataSet; pParent : Tcomponent);
begin
  TProvider(FindComponent(pClientDataset.ProviderName)).DataSet.Free;
  TProvider(FindComponent(pClientDataset.ProviderName)).Free;
end;

En orden de ideas el primer método trabaja a la perfección y su codifcación es la siguiente

Código Delphi [-]
procedure TFPedido.FormCreate(Sender: TObject);
begin
 self.conjuntoDatos:= getClientDataset('ConjuntoDatos', Self , 'Select * from pedido');
 Self.dsPedidos.DataSet:= self.conjuntoDatos;
 self.dbgrdPeidos.DataSource:= Self.dsPedidos;
end;

Ahora una vez creando el primer método, escrbi el segundo con el que deseo liberar los componentes de datos pero al construir la app me envia el siguiente mensaje de error el compilador

Build
[Error] UCoreBD.pas(51): Undeclared identifier: 'FindComponent'
[Fatal Error] Pedidos.dpr(14): Could not compile used unit 'Core\UCoreBD.pas'

Agradezco de antemano cualquier comentario y el tiempo dedicado



gertorresm
co

Última edición por GerTorresM fecha: 08-08-2015 a las 04:31:08. Razón: Datos con copyrigth
Responder Con Cita
  #2  
Antiguo 08-08-2015
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
FindComponent en unidad.pas - Finalizado

Bien leyendo un poco pude encontrar que antes de utilizar FindComponent, debe indicar sobre que Form se ha de efectuar la busqueda, el código corregido es el siguiente

Código Delphi [-]

procedure liberarClientDataset(pClientDataset : TClientDataSet; pParent : Tcomponent);
begin
  TProvider(pParent.FindComponent(pClientDataset.ProviderName)).DataSet.Free;
  TProvider(pParent.FindComponent(pClientDataset.ProviderName)).Free;
  pClientDataset.Free;
end;


Listo para el que lo requiera
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
con FindComponent en una dll no compila aguml C++ Builder 3 30-12-2014 15:33:20
Uso de la función FindComponent jessie Varios 7 27-02-2013 20:58:50
Exception eInvalidCast con FindComponent mrnovice OOP 3 10-07-2008 02:38:58
Uso de FindComponent vlanka24 Varios 4 05-12-2007 14:40:18
Ayuda con findcomponent! b3nshi Varios 5 02-08-2007 22:11:22


La franja horaria es GMT +2. Ahora son las 08:02:12.


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