Executar query na DLL e retornar os dados p aplicação Delphi
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.
Agradeço se alguém puder ajudar.
Mkoch
Curtidas 0
Respostas
Emerson Nascimento
25/11/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.
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.
GOSTEI 0
Mkoch
25/11/2005
Boa, valeu
GOSTEI 0
Mkoch
25/11/2005
O problema e que eu uso o IBX, será que tem algum jeito também?
GOSTEI 0
Emerson Nascimento
25/11/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;
- 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;
GOSTEI 0
Mkoch
25/11/2005
Valeu, muito obrigado pela ajuda.
GOSTEI 0
Leonardo Silva
25/11/2005
Sei que esse post é antigo mais gostaria de saber se é possivel fazer isso na minha estrutura de dados...
vejam nesse link: https://www.devmedia.com.br/forum/viewtopic.asp?id=396075
PS: não uso clientdataset.
vejam nesse link: https://www.devmedia.com.br/forum/viewtopic.asp?id=396075
PS: não uso clientdataset.
GOSTEI 0
José
25/11/2005
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0