Fórum Dúvidas ClientDataSet #229755

04/05/2004

0

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

Responder

Posts

04/05/2004

Paulo_amorim

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é+


Responder

Gostei + 0

04/05/2004

Gabriel Ferrarini

Pode ignorar aquela linha, escrevi errado :roll:


Responder

Gostei + 0

04/05/2004

Rômulo Barros

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

ClientDataSet1.SetProvider(DataSetProvider1);



Responder

Gostei + 0

04/05/2004

Gabriel Ferrarini

Funcionou. Valeu!!!

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


Responder

Gostei + 0

06/05/2004

Rômulo Barros

Beleza :lol: :lol:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar