Problema c/ select e SQLDataSet
Uso Delphi6, Firebird 1.5 e Dbexpress
Estou com o seguinte problema:
Tenho um SQLDataSet com o seguinte commandtext=
quando o usuario entra em uma determinada tela, preciso fazer um novo select c/ alguns parametros, estou fazendo assim:
só que este select não dá certo o valor que aparece é o mesmo valor que está na propriedade commandtext.
O certo seria aparecer somente as vendas do terminal e no dia escolhido.
Não sei se fui muito claro
Se alguem puder me dar uma força.
Obrigado
Estou com o seguinte problema:
Tenho um SQLDataSet com o seguinte commandtext=
select sum(total_vendas) as SOMA, f_pagto from RESUMO_VENDAS group by f_pagto´;
quando o usuario entra em uma determinada tela, preciso fazer um novo select c/ alguns parametros, estou fazendo assim:
datamodule1.SQLDataSetcaixa.Close; datamodule1.SQLDataSetcaixa.CommandText:=´select sum(TOTAL_VENDAS) as SOMA from RESUMO_VENDAS where TERMINAL=:id_terminal and cast(DATA_HORA as date)=:data_mov1 group by f_pagto´; datamodule1.SQLDataSetcaixa.ParamByName(´data_mov1´).AsDate:=datetimepicker1.Date; datamodule1.SQLDataSetcaixa.ParamByName(´id_terminal´).AsString:=id_terminal; datamodule1.SQLDataSetcaixa.Open;
só que este select não dá certo o valor que aparece é o mesmo valor que está na propriedade commandtext.
O certo seria aparecer somente as vendas do terminal e no dia escolhido.
Não sei se fui muito claro
Se alguem puder me dar uma força.
Obrigado
Gameiro
Curtidas 0
Respostas
Vinicius2k
25/10/2004
Colega,
Existe ClientDataSet ligado à este SQLDataSet?
Se sim, o ClientDataSet deve ser fechado e aberto ou atualizado (Refresh) e nunca execute, o método Open diretamente num SQLDataSet (ou outro TDataSet) que tenha um ClientDataSet ligado à ele... vc estará executando a mesma operação duas vezes, pq ao abrir o ClientDataSet, o Provider vai :
1. Iniciar uma transação.
2. Abrir o SQLDataSet.
3. Trazer os registros para o buffer do ClientDataSet.
4. Fechar a transação.
Espero ter ajudado...
T+
Existe ClientDataSet ligado à este SQLDataSet?
Se sim, o ClientDataSet deve ser fechado e aberto ou atualizado (Refresh) e nunca execute, o método Open diretamente num SQLDataSet (ou outro TDataSet) que tenha um ClientDataSet ligado à ele... vc estará executando a mesma operação duas vezes, pq ao abrir o ClientDataSet, o Provider vai :
1. Iniciar uma transação.
2. Abrir o SQLDataSet.
3. Trazer os registros para o buffer do ClientDataSet.
4. Fechar a transação.
datamodule1.ClientDataSetCaixa.Close; datamodule1.SQLDataSetCaixa.Close; // em geral, desnecessário, mas se vc quiser garantir... datamodule1.SQLDataSetcaixa.CommandText:= ´select sum(TOTAL_VENDAS) as SOMA from RESUMO_VENDAS where TERMINAL=:id_terminal and cast(DATA_HORA as date)=:data_mov1 group by f_pagto´; datamodule1.SQLDataSetcaixa.ParamByName(´data_mov1´).AsDate:=datetimepicker1.Date; datamodule1.SQLDataSetcaixa.ParamByName(´id_terminal´).AsString:=id_terminal; datamodule1.ClientDataSetCaixa.Open;
Espero ter ajudado...
T+
GOSTEI 0
Gameiro
25/10/2004
Vinicius muito obrigado, eu não sabia que não era correto abrir o sqldataset, quando se tem um clientdataset.
Valeu mesmo,
Ate mais.
Valeu mesmo,
Ate mais.
GOSTEI 0