Executar query na DLL e retornar os dados p aplicação Delphi

25/11/2005

Tenho uma DLL certo, executo uma query dentro da DLL que retorna vários registros, tem como eu alimentar um DBGrid na minha aplicação Delphi com estes dados?
Agradeço se alguém puder ajudar.


Mkoch

Respostas

25/11/2005

Emerson

eu faço isso usando clientdataset.

como fazer:
o retorno da sua função na ddl precisa ser um variant.
daí, na sua dll você faz: result := clientdatasetdadll.data;

no seu aplicativo você precisa ter um clientdataset instanciado (ou dinâmico, a escolha é sua) que não deve estar ligado a qualquer base de dados.
aí você faz assim:

clientdataset.close;
clientdataset.createdataset;
clientdataset.data := funcaodaddl;
clientdataset.first;

pronto! seus registro já estão no clientdataset. se esse clientdataset estiver ligado à uma grade, os dados serão exibidos.


Responder Citar

25/11/2005

Mkoch

Boa, valeu


Responder Citar

25/11/2005

Mkoch

O problema e que eu uso o IBX, será que tem algum jeito também?


Responder Citar

25/11/2005

Emerson

tem jeito de retornar os valores, sim.

- na sua dll, instancie um DatasetProvider (palleta DataAccess) e ligue-o ao seu IBX dataset;
- altere a opção poAllowCommandText da propriedade Options do DatasetProvider para True para o caso de você usar instruções dinâmicas;
- instancie um ClientDataset (palleta DataAccess) na sua dll e ligue sua propriedade ProviderName ao DatasetProvider recém instanciado.

pronto! agora trabalhe com o ClientDataset, mantendo seus componentes IBX.

ClientDataset.Close;
ClientDataset.CommanText := suainstrucao;
[ ClientDataset.Params.ParamByName(´´).asstring := ´´; ]
ClientDataset.Open;
Result := ClientDataset.Data;


Responder Citar

25/11/2005

Mkoch

Valeu, muito obrigado pela ajuda.


Responder Citar

05/03/2011

Leonardo Silva

Sei que esse post é antigo mais gostaria de saber se é possivel fazer isso na minha estrutura de dados...

vejam nesse link:  http://www.devmedia.com.br/forum/viewtopic.asp?id=396075

PS: não uso clientdataset.
Responder Citar

29/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder Citar