Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LiMaO

ligaçao entre duas querys

Recommended Posts

tenho 2 querys (QUERY_SOMAR e QUERY_CALULAR) na minha "QUERY_CALCULAR" eu pego e divido dois campos da minha tabela, o campo "preço" e o campo "quantidade"para obter quanto vale a unidade do meu produto, o preço dele unitarioQUERY_CALCULAR: select PRECO/QTDE from tbResultadona "QUERY_SOMAR" eu pego e somo um campo da minha tabela "tbResultado", ela pega e soma todos os valores desse campo e me da um valor...QUERY_SOMAR: select sum(PRECO)*QTDE from tb resultadoqueria saber se tem como eu "juntar" essas duas querys, para quando eu clicar no botao "CALCULAR" ele me der o total multiplicando o valor de cada unidade que obtenho atraves da "QUERY_CALCULAR" vezes o valor de quantidades que tenho..ex: (se fosse em 1 query só)select QTDE from tbResultado; (QUERY_QUANTIDADE, no caso eu criaria outra query)select (PRECO/QUERY_QUANTIDADE) from tbResultado; (para saber o valor de cada produto) (QUERY_CALCULAR)select QUERY_CALCULAR*QUERY_QUANTIDADE from tbResultado; (para saber o total do valor dos produtos)mais ou menos assim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não teria como colocar tudo dentro da mesma query ?Algo como:

SELECT (sum(PRECO/QTDE) * sum(qtde)) AS ValorFROM tbResultado

Senão, coloque um exemplo com valores para saber o que precisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tentei isso ja... mas o problema é que o meu dbgrid pega os valores de uma tabela, e o preço dessa tabela ja vem o total, nao o preço unitario...ex Descrição | QTDE | Preço Biscoito Marilan | 3 | 9,00ai a pessoa escolhe a quantidade... Descrição | QTDE | Preço Biscoito Marilan | 1 | 9,00mas ai ele calcula o preço do produto ficaria 9,00 e nao 3,00 que é o verdadeiro preço...entao eu teria que pegar o preço total dividir pela quantidade inicial para ter o valor do produto, para depois calcular o total multiplicando o valor do produto * a qtde que escolherem no dbgrid (editando a qtde)...ex caso fosse todos: Descrição | QTDE | Preço Biscoito Marilan | 3 | 9,00mas ai quero só trocar duas unidades Descrição | QTDE | Preço Biscoito Marilan | 2 | 6,00

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq tipo eu pego o código de barras e a descriçao do meu produto de um arquivo txt, entao eu comparo com outro arquivo txt, os lugares onde forem iguais no 1º e 2º arquivo eu coloco no dbgrid...

 

alem disso eu pego outras informaçoes do 2º arquivo (QTDE, Preço Total e Data)... eu nao tenho o preço unitario do produto, eu conseguiria fazer isso se ele gravasse essas informaçoes dos arquivos em uma tabela, mas nao grava... vo por meu codigo aqui...

 

 

procedure Tform_troca.Button1Click(Sender: TObject);

var

Buffer: String;

Arq1, Arq2: TextFile;

valor,ecf:string;

 

 

begin

 

valor:=(Edit_cupom.Text);

ecf:=edit_ecf.text;

AssignFile(Arq2, 'C:\Documents and Settings\Rogerio\Meus documentos\allan\Nova pasta\allan.sdf');

Reset(Arq2);

// 1º - Passo importar o cadastro de produto

while not Eof(Arq2) do

begin

ReadLn(Arq2, Buffer);

tbProduto.AppendRecord([

Copy(Buffer,14,13), // Codigo do produto

Copy(Buffer,27,20) // Descricao do produto

]);

end;

CloseFile(Arq2);

if FileExists('H:\mov�3\m' + valor + '.' + ecf) then

begin

showmessage('encontrado');

AssignFile(Arq1, 'H:\mov�3\m' + valor + '.' + ecf );

Reset(Arq1);

// 2º - Passo importar as trocas

while not Eof(Arq1) do

begin

ReadLn(Arq1, Buffer);

if tbProduto.Locate('CODIGO', Copy(Buffer,37,13), []) then

begin // Desta forma vai localizar a descrição do prod. na primeira tab. importada

tbTroca.AppendRecord([

tbProdutoCODIGO.AsString,

tbProdutoDESCRICAO.AsString,

Copy(BUFFER, 75, 6) + DecimalSeparator + Copy(BUFFER, 81, 3), // Quantidade

Copy(BUFFER, 84,10) + DecimalSeparator + Copy(BUFFER, 94,2), // Preço

Copy(BUFFER, 26,6), //Data

Copy(BUFFER, 12,4) //ECF

]);

end;

end;

CloseFile(Arq1);

end;

end;

 

esse código eu colocaria na tabela tbTroca, mas eu vejo a tabela e nao tem nada registrado... :/

 

esse para selecionar as linhas do dbgrid e adicinar as selecionadas nas tabelas tbResultado e tbResultado2

 

procedure Tform_troca.Button3Click(Sender: TObject);

var

Idx :Integer;

cod:string;

begin

cod:=edit_cod.text;

 

if DBGrid1.SelectedRows.Count > 0 then

begin

for Idx := 0 to DBGrid1.SelectedRows.Count-1 do

begin

// posiciona o dataset de origem no "n" registro selecionado

tbTroca.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[idx]));

 

// move os dados do dataset de origem para destino aqui

tbResultado.Append;

tbResultadoCODIGO.Value := tbTrocaCODIGO.Value;

tbResultadoDESCRICAO.Value := tbTrocaDESCRICAO.Value;

tbResultadoQTDE.Value := tbTrocaQTDE.Value;

tbResultadoPRECO.Value := tbTrocaPRECO.value;

tbResultadoECF.Value := tbTrocaECF.Value;

tbResultadoCOD_CLIENTE.Value:=cod;

tbResultadoTOTAL_TROCA.Value:=tbTrocaPRECO.Value*tbTrocaQTDE.value;

tbResultado.Post;

 

tbResultado2.Append;

tbResultado2CODIGO.Value := tbTrocaCODIGO.Value;

tbResultado2DESCRICAO.Value := tbTrocaDESCRICAO.Value;

tbResultado2QTDE.Value := tbTrocaQTDE.Value;

tbResultado2PRECO.Value := tbTrocaPRECO.Value;

tbResultado2ECF.Value := tbTrocaECF.Value;

tbResultado2COD_CLIENTE.Value:=cod;

tbResultado2TOTAL_TROCA.Value:=tbTrocaPRECO.Value*tbTrocaQTDE.Value;

tbResultado2.Post;

 

end;

end;

showmessage('Pode Imprimir!');

end;

 

ele pega o valor total certinho se eu colocar a quantidade e o preço unitario no dbgrid, mas eu queria que ele ja viesse com o preço unitario no dbgrid, assim a pessoa só mudaria a quantidade...

 

assim é como ele fica quando eu importo e comparo os dois arquivos e seleciono as linhas que quero, sem modificar nada:

 

FOTO1

 

pode ver que ele pega a soma certinha... mas isso sem eu modificar a quantidade...

 

ai quando eu modifico a quantidade ele pega o valor total divide pela quantidade que eu coloquei, isso gera um preço unitario errado...

 

FOTO2

 

se eu modificar quantidade e preço, ex:

 

1 unidade - R$3,00

2 unidades - R$6,00

 

eu consigo pegar o valor total corretamente... mas sem modificar o preço do produto ele pega o valor total recebido do 2º arquivo que está no dbgrid e divide pela quantidade modificada...

 

nao tem como eu mudar a quantidade e automaticamente mudar o preço no dbgrid? ou entao clicar em um botao "calcular" e modificar o preço pegando qtde e preços iniciais, dividindo-os e obtendo o valor unitario?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu estou conseguindo colocar o valor do 1º produto que eu escolho do dbgrid em uma outra tabela, através de um botao "calcular"procedure Tform_troca.Button5Click(Sender: TObject);begin tbTemporaria.Append; tbTemporariaPRECO.value:=tbTrocaPreco.value/tbTrocaQTDE.value; tbTemporariaTOTAL.value:=tbTemporariaPRECO.value*tbTrocaQTDE.value; tbtemporaria.Next;end;mas eu só consigo calcular o 1º produto que está no meu dbgrid, como posso fazer para calcular os que eu selecionei?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.