Fórum Problema c/ select e SQLDataSet #255945

25/10/2004

0

Uso Delphi6, Firebird 1.5 e Dbexpress

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

Gameiro

Responder

Posts

25/10/2004

Vinicius2k

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.

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+


Responder

Gostei + 0

26/10/2004

Gameiro

Vinicius muito obrigado, eu não sabia que não era correto abrir o sqldataset, quando se tem um clientdataset.



Valeu mesmo,

Ate mais.


Responder

Gostei + 0

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

Aceitar