Fórum Duvida criação de componente de conexão em Run Time #342460
11/06/2007
0
type
TFuncionarios=class(Conexao)
function consultar_func(re:Integer):TDataSet;
end;
var
CDSConsFunc:TClientDataSet;
SQLDSConsFunc:TSQLDataSet;
DSConsFunc:TDataSource;
DSPConFunc:TDataSetProvider;
implementation
{ TFuncionarios }
constructor TFuncionarios.criar_obj_cons;
begin
end;
function TFuncionarios.consultar_func(re: Integer): TDataSet;
begin
DSPConFunc:=TDataSetProvider.Create(DSPConFunc);//sendo que assim ele não da erro mas também não cria os objetos eu coloquei também assim: DSPConFunc:=TDataSetProvider.Create(self);//nesse caso da erro de incompátivel tipos TComponent e TFuncionarios que é o nome da classe.
Observação:Quando eu coloco em um form normal com a seguinte sintaxe:
DSPConFunc:=TDataSetProvider.Create(Owner);// funciona normalmente, mas se eu colocar na classe com essa sintaxe diz que o nome Owner não foi declarado.
Será que alguém sabe o que pode estar acontecendo.
Desde de já agradeço a ajuda
Jujan
Curtir tópico
+ 0Posts
11/06/2007
Ruyoutor
DSPConFunc:=TDataSetProvider.Create(nil);
Gostei + 0
11/06/2007
Jujan
Ex: Se eu colocar no evento on click de um botão está criando outros botões e não o componente de conexão que eu quero que ele crie no meu caso o DataSetProvider e o ClientDataSet.Com o nil não dá erro porém não cria a instância do objeto.
Gostei + 0
11/06/2007
Jujan
unit U_ClasseFunc;
interface
uses DBXpress, DB, SqlExpr, DBClient, StdCtrls, Provider, FMTBcd,U_ClasseConexao;
type
TFuncionarios=class(Conexao)
re:integer;
nome:string;
c_cc:string;
status:string;
re_chefia:integer;
function consultar_func(re:Integer):TDataSet;
constructor criar_obj_cons;
constructor create;
end;
var
CDSConsFunc:TClientDataSet;
SQLDSConsFunc:TSQLDataSet;
DSConsFunc:TDataSource;
DSPConFunc:TDataSetProvider;
implementation
{ TFuncionarios }
{ TFuncionarios }
constructor TFuncionarios.criar_obj_cons;
begin
end;
function TFuncionarios.consultar_func(re: Integer): TDataSet;
begin
SQLDSConsFunc:=TSQLDataSet.Create(SQLDSConsFunc);
SQLDSConsFunc.SQLConnection:=SQLConn;
SQLDSConsFunc.CommandText:=´select * from tabfuncionario where re = :re´;
DSPConFunc:=TDataSetProvider.Create(nil);
DSPConFunc.Name:=´DSPConFunc´;
DSPConFunc.DataSet:=SQLDSConsFunc;
CDSConsFunc:=TClientDataSet.Create(nil);
CDSConsFunc.Name:=´CDSConsFunc´;
CDSConsFunc.ProviderName:=´DSPConFunc´;
DSConsFunc:=TDataSource.Create(DSConsFunc);
DSConsFunc.DataSet:=CDSConsFunc;
CDSConsFunc.FetchParams;
CDSConsFunc.Close;
CDSConsFunc.Params[0].AsInteger:=13398;
CDSConsFunc.Open;
end;
constructor TFuncionarios.create;
begin
end;
end.
Aqui eu faço da chamada
Funcionarios:=TFuncionarios.create;
datasource1.DataSet:=Funcionarios.consultar_func(13398);
Dbgrid1.DataSource:=datasource1;
Aí gera o seguinte erro CDSConsFunc Missing Data provider or data packet.
Gostei + 0
11/06/2007
Ruyoutor
CDSConsFunc:=TClientDataSet.Create(Application);
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)