Array
(
)

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

Mkoch
   - 25 nov 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.


Emerson
   - 25 nov 2005

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.


Mkoch
   - 25 nov 2005

Boa, valeu


Mkoch
   - 25 nov 2005

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


Emerson
   - 25 nov 2005

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;


Mkoch
   - 25 nov 2005

Valeu, muito obrigado pela ajuda.


Leonardo Silva
   - 05 mar 2011

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.

José
   - 29 mai 2013

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