Somando em Select e jogando em dbedit

Delphi

03/04/2006

Pessoal, estou fazendo o seguinte:

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


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

Ricieri

Curtidas 0

Respostas

Rjun

Rjun

03/04/2006

Coloque um trecho maior do seu código.


GOSTEI 0
Nasguone

Nasguone

03/04/2006

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


GOSTEI 0
Ricieri

Ricieri

03/04/2006

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;


GOSTEI 0
Rjun

Rjun

03/04/2006

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;



GOSTEI 0
Ricieri

Ricieri

03/04/2006

cara, funcionou!
valeu!


GOSTEI 0
POSTAR