GARANTIR DESCONTO

Fórum Consulta com DBExpress #342861

20/06/2007

0

Utilizo DBExpress para acessar meu BD FB, entao utilizo SQLDataset+Provider+ClientDataset+Datasorce, existe uma maneira para nos casos onde necessito somente fazer uma consulta utilizar menos componentes ? Por exemplo, quando vou fazer um relatorio utilizo somente o SQLDataset, mas quando preciso que os dados sejam exibidos em um datagrid, entao nao consigo utilizar somente o SQLDataset, qual a sujestao podem me dar para isso?

Abs


Felipeiw

Felipeiw

Responder

Posts

20/06/2007

Macario

Olá.

dbExpress é unidirecional, por este fato é necessário o uso de ClientDataSet para link com componentes dataware(dbgrid, etc).


[]´s


Responder

Gostei + 0

20/06/2007

Paullsoftware

Olha, o que vc pode fazer é como faço, tenho um datamodule consultas
onde nessa datamodule exite o trio mágico...
SQLDataSet + DataSetProvider + ClientDataSet

Mudo a Propriedade AllowCommandText do CDS e centralizo todas as consultas nesse trio...


Responder

Gostei + 0

20/06/2007

Felipeiw

Paulo, mas nos casos onde os campos que serao retornados pela consulta sao diferentes de outras consultas, vc nao carrega os campos no fields editor? Se nao carrega como vc faz para exibi-los no dbgrid?

Abs


Responder

Gostei + 0

20/06/2007

Paullsoftware

Paulo, mas nos casos onde os campos que serao retornados pela consulta sao diferentes de outras consultas, vc nao carrega os campos no fields editor? Se nao carrega como vc faz para exibi-los no dbgrid? Abs

Essa é a parte interessante! quando preciso exibir os dados num grid uso um ClientDataSet diferente que aponte para o meu DSP, ou seja, acho que não fui muito claro na resposta anterior... eu uso apenas 1 SQLDataSet e 1 DataSetProvider e vários ClientDataSet´s quanto a necessidade, apenas aponto todos os meus CDS para o mesmo DSP, deu pra entender...
mais mesmo se for o caso de usar apenas um, o Grid vai mostrar apenas os campos filtrados e vc pode criar as colunas em Run-Time mudando a propriedade DisplayLabel do Field por exemplo:
SeuCDS.Fields[0].DisplayLabel := ´Código do Cliente´; SeuCDS.Fields[1].DisplayLabel := ´Nome do Cliente´;
e assim por diante, mais a primeira opção é mais simples :wink:


Responder

Gostei + 0

20/06/2007

Felipeiw

Entendi, e quanto a usar formularios mdi, nao corre o risco de 2 ou mais relatorios serem abertos ao mesmo tempo e utilizarem os mesmos sqldataset + dsp, porem com cds para cada form ?

Abs


Responder

Gostei + 0

20/06/2007

Paullsoftware

Entendi, e quanto a usar formularios mdi, nao corre o risco de 2 ou mais relatorios serem abertos ao mesmo tempo e utilizarem os mesmos sqldataset + dsp, porem com cds para cada form ? Abs

Não, pois os CDS são carregados para memória, faça um teste básico!
abra duas ou mais telas, execute consultas aleatórias e veja o resultado :wink:


Responder

Gostei + 0

20/06/2007

Felipeiw

Certissimo Paulo o CDS trata os dados em memoria, sei disso, talvez eu tenha sido mt pessimista, mas estava referindo a concorrencia no momento da consulta mesmo, nem sei se o SQLDataset + PRO consegueria tratar isso essa concorrencia, tambem nao consigo ter certeza se esse problema é realmente preocupante.

Abs


Responder

Gostei + 0

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

Aceitar