Consulta com DBExpress
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
Abs
Felipeiw
Curtidas 0
Respostas
Macario
20/06/2007
Olá.
dbExpress é unidirecional, por este fato é necessário o uso de ClientDataSet para link com componentes dataware(dbgrid, etc).
[]´s
dbExpress é unidirecional, por este fato é necessário o uso de ClientDataSet para link com componentes dataware(dbgrid, etc).
[]´s
GOSTEI 0
Paullsoftware
20/06/2007
Olha, o que vc pode fazer é como faço, tenho um datamodule consultas
onde nessa datamodule exite o trio mágico...
Mudo a Propriedade AllowCommandText do CDS e centralizo todas as consultas nesse trio...
onde nessa datamodule exite o trio mágico...
SQLDataSet + DataSetProvider + ClientDataSet
Mudo a Propriedade AllowCommandText do CDS e centralizo todas as consultas nesse trio...
GOSTEI 0
Felipeiw
20/06/2007
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
Abs
GOSTEI 0
Paullsoftware
20/06/2007
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:GOSTEI 0
Felipeiw
20/06/2007
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
Abs
GOSTEI 0
Paullsoftware
20/06/2007
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:
GOSTEI 0
Felipeiw
20/06/2007
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
Abs
GOSTEI 0