ClientDataSet abre mas não mostra resultado nos DataWare

Delphi

06/12/2006

Pessoal,
Tenho uma DataModule dentro de um DLL.
Eu crio o DataModule da seguinte maneira no Create do Form principal:

procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
  if dmCadastro = nil then dmCadastro := TdmCadastro.Create(nil);
end;



Até aqui tudo bem. O problema vem daqui para frente, tenho no meu DataModule:

SqlConnection + SqlDataSet + DataSetProvider + ClientDataSet + DataSource

SqlDataSet.Command := ´select * from cliente´

Tudo configurado certinho. Compilo tudo e faço a chamada da DLL, o Form principal abre e quando clico no botao com o seguinte codigo:

  dmCadastro.cdsExecSql.Open;
  if not dmCadastro.cdsExecSql.IsEmpty then ShowMessage(dmCadastro.cdsExecSql.fieldbyname(´apelido´).AsString);


Nisso ai eu ta tinha ligado o DataSource nos respectivos componentes DataWare .. inclusive para teste coloquei ligado ao DataSource um dbGrid.
Entao quando executo o codigo acima o ShowMessage exibi o primeiro registro encontrado ... isso quer dizer que as informçoes estao no ClientDataSet ... mas estas informacoes nao sao exibidas nos controles DataWare ....

Estou usando o Firebird.

Vou deixar aqui tambem o codigo da DLL:

library IntegraSistema;

uses
  SysUtils,
  Classes,
  Forms,
  ufrmPrincipal in ´ufrmPrincipal.pas´ ,
  udmCadastro in ´udmCadastro.pas´ {dmCadastro: TDataModule},
  ufmClienteLocaliza in ´ufmClienteLocaliza.pas´ ,
  ufmVendedorLocaliza in ´ufmVendedorLocaliza.pas´ ,
  ufmCotacaoLocaliza in ´ufmCotacaoLocaliza.pas´ ,
  ufrmEventoLocaliza in ´ufrmEventoLocaliza.pas´ ;

{$R *.res}

var
  OldApplication : TApplication;
  OldScreen : TScreen;

procedure IntegraSistemaPadrao; stdcall;
begin
  Application := OldApplication;
  Screen := OldScreen;
end;

procedure AbreIntegraSistema( aApplication : TApplication; sScreen : TScreen; IdUsu : integer ); stdcall;
begin

  if (OldApplication = nil) and (OldScreen = nil) then begin
    OldApplication := Application;
    OldScreen := Screen;

    Application := aApplication;
    Screen := sScreen;
  end;

  if frmPrincipal = nil then begin
    frmPrincipal := TfrmPrincipal.Create(Application);
    frmPrincipal.IdUsuario := IdUsu;
  end;

end;


Exports
  IntegraSistemaPadrao,
  AbreIntegraSistema;

begin
end.



Bom se alguem ai puder me ajudar.


Mmoreira

Mmoreira

Curtidas 0

Respostas

Mmoreira

Mmoreira

06/12/2006

Pessoal,
Seguindo uma diaca passada pelo EmersonEN eu tive que passar o DataSet do DataSource em tempo de execução ... ao que parece em algum momento do processo todo esta referencia é perdida entao bastou eu fazer:

  dmCadastro.ClientDataSet_Cliente.Close;
  DataSource1.DataSet := dmCadastro.ClientDataSet_Cliente;
  dmCadastro.ClientDataSet_Cliente.Open;


O interessante seria descobri porque ocorre este problema, mas vou deixar isso para depois porque tenho que correr com isso .. pois este probleminha me atrapalhou todo.

Quiz deixar registrado aqui pois se alguem tiver o mesmo problema ja sabe como resolver ....

Valew


GOSTEI 0
POSTAR