LiMaO 0 Denunciar post Postado Setembro 26, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 26, 2007 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
LiMaO 0 Denunciar post Postado Setembro 27, 2007 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
marcio.theis 3 Denunciar post Postado Setembro 27, 2007 Mas pq você não cria no seu produto um campo valor unitário, onde que pegaria e multiplicaria pela quantidade, gerando assim o preço... Compartilhar este post Link para o post Compartilhar em outros sites
LiMaO 0 Denunciar post Postado Setembro 27, 2007 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
LiMaO 0 Denunciar post Postado Setembro 27, 2007 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