Somando em Select e jogando em dbedit

03/04/2006

Pessoal, estou fazendo o seguinte:

[color=green&93;datamodule2.mat_vendas_soma.SelectSQL.Add(´select sum(valor_total) from mat_vendas where id_venda = :pvenda´)&91;/color&93;


O que acontece:
Tenho estas 2 tabelas, vendas e mat_vendas.
Eu preciso pegar o valor total dos itens da mat_vendas para jogar em um dbedit da tabela vendas.
mas não consigo, ele não funciona.
O que pode ser feito?
Valeu!


Ricieri

Respostas

03/04/2006

Rjun

Coloque um trecho maior do seu código.


Responder Citar

03/04/2006

Nasguone

Tente fazer uma procedure no proprio banco com parametro pegue esse parametro e jogue no dbedit


Responder Citar

03/04/2006

Ricieri

begin
with datamodule2.valor_total_venda do
begin
Close;
ParamByName(´pvendamat´).AsInteger := datamodule2.vendas.FieldByName(´ID_Venda´).AsInteger;
Open;
datamodule2.valor_total_venda.close;;
datamodule2.valor_total_venda.sql.clear;
datamodule2.valor_total_venda.SQL.Add(´select sum(a.valor_total) as total from mat_vendas a where a.id_venda = :pvendamat´);
datamodule2.valor_total_venda.open;
dbedit3.text := datamodule2.valor_total_venda.fieldbyname(´total´).text;

end;


Responder Citar

04/04/2006

Rjun

Jogue isso em um EDIT. Acho que não tem como você fazer isso pra um DBEDIT, já que ele é um controle consciente de dados.

Observações:

1. Passe o valor do parâmetro depois que você criar sua Query.
2. Se você está usando o WITH (que eu particulamente não uso), não precisa ficar repetindo o datamodule2.
3. Você pode por essa instrução SQL direto no seu componente TQuery em vez de ficar enfiado isso dentro do seu código.
4. Não fique deixando as querys abertas sem necessidade. Abra a query, faça o que tem q fazer, depois feche.

begin 
with datamodule2.valor_total_venda do 
begin 
  valor_total_venda.sql.clear; 
  valor_total_venda.SQL.Add(´select sum(a.valor_total) as total from mat_vendas a where a.id_venda = :pvendamat´); 
  valor_tota_venda.ParamByName(´pvendamat´).AsInteger :=   vendas.FieldByName(´ID_Venda´).AsInteger; 
  try
    valor_total_venda.Open; 
    Edit1.text := valor_total_venda.fieldbyname(´total´).text; 
  finally
    valor_total_venda.Close;
  end;
end;



Responder Citar

04/04/2006

Ricieri

cara, funcionou!
valeu!


Responder Citar