Dúvidas ClientDataSet

Delphi

04/05/2004

Estou usando o seguinte código em um botão:

  Query := TIBQuery.Create(Self);
  Prov  := TDataSetProvider.Create(Self);
  CliDS := TClientDataSet.Create(Self);
  DS    := TDataSource.Create(Self);

  Query.Database    := IBDatabase1;
  Query.Transaction := IBTransaction1;
  Query.SQL.Add(Edit1.Text);

  Prov.DataSet := Query;
  Prov.Name := ´Prov´;

  CliDS.ProviderName := Prov.Name;

  DS.DataSet := CliDS;

  DBGrid1.DataSource := DS;

  CliDS.Active := True;


meu DBGrid mostra tudo como se deve.

Mas se eu uso o código dentro de uma classe criada por mim, TCliente por exemplo:

constructor TCliente.Create;
begin
  Query := TIBQuery.Create(Query);
  Prov  := TDataSetProvider.Create(Prov);
  CliDS := TClientDataSet.Create(CliDS);
  DS    := TDataSource.Create(DS);

  Query.Database    := IBDatabase1;
  Query.Transaction := IBTransaction1;
  Query.SQL.Add(Edit1.Text);

  Prov.DataSet := Query;
  Prov.Name := ´Prov´;

  CliDS.ProviderName := Prov.Name;

  DS.DataSet := CliDS;
end;


e depois no botão crio a classe e tento utilizar suas propriedades:

var
  Cliente: TCliente;
begin
  Cliente := TCliente.Create;
  Cliente.Query.SQL.Add(Edit1.Text);
  DBGrid1.DataSource := Cliente.DS;
  Cliente.CliDS.Active := True;  =====>>>> o problema ocorre nessa linha
end;


recebo a mensagem ´Missing Data Provider or data packet´

Alguém sabe o que fazer?

PS: Minha classe deriva de TObject.

Obrigado.


Gabriel Ferrarini

Gabriel Ferrarini

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

04/05/2004

Olá

Talvez o que eu esteja falando nao tenha nada a ver com o problema, mas no construtor da classe vc declarou um Edit1

constructor TCliente.Create;
begin
//(...)
Query.Transaction := IBTransaction1;
Query.SQL.Add([b:08df051137]Edit1.Text[/b:08df051137])
//(...)
end;

Talvez seja besteira, mas creio que o Edit não esteja dentro do escopo da classe

Até+


GOSTEI 0
Gabriel Ferrarini

Gabriel Ferrarini

04/05/2004

Pode ignorar aquela linha, escrevi errado :roll:


GOSTEI 0
Rômulo Barros

Rômulo Barros

04/05/2004

Provavelmente, seu TDataSetProvider não está ligado ao ClientDataSet.
tente o seguinte:

ClientDataSet1.SetProvider(DataSetProvider1);



GOSTEI 0
Gabriel Ferrarini

Gabriel Ferrarini

04/05/2004

Funcionou. Valeu!!!

Sem querer ser chato... por que na minha classe eu precisei fazer isso??


GOSTEI 0
Rômulo Barros

Rômulo Barros

04/05/2004

Beleza :lol: :lol:


GOSTEI 0
POSTAR