Mesfistofeles Postado Março 4, 2009 Denunciar Share Postado Março 4, 2009 (editado) Bom diaEstou fazendo uma tela de venda mas na hora de inserir os produtos de um determinado cliente ele acaba somando com o valor do cliente anterior.Quando movimento o dbnavigatos todos os campos mudam normalmente até mesmo o dbtext onde esta o campo aggregate do clientdataset. Na select do adoquery que uso junto com o clientdataset fiz assim.Select * from item where coditem=:codigoitem;desde já agradeço a ajuda Editado Março 10, 2009 por Mesfistofeles Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 4, 2009 Denunciar Share Postado Março 4, 2009 Select * from item where coditem=:codigoitem;Seria melhor você postar a estrutura das tabelas. Este SQL está filtrando um item específico.Quando você vai filtrar items de determinada coisa (um pedido, por exemplo), para listar, somar ou fazer qualquer outra coisa com eles, o filtro será pelo "código" desta determinada coisa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mesfistofeles Postado Março 4, 2009 Autor Denunciar Share Postado Março 4, 2009 Select * from item where coditem=:codigoitem;Seria melhor você postar a estrutura das tabelas. Este SQL está filtrando um item específico.Quando você vai filtrar items de determinada coisa (um pedido, por exemplo), para listar, somar ou fazer qualquer outra coisa com eles, o filtro será pelo "código" desta determinada coisa.Fiz assim no access criei duas tabelas VendaCli (vendas feitas pelo cliente) com chave primaria no "vendacli" tipo de dados: autonumeração nesta tabela têm ainda dois camposTabela vendacli: Tipo de Dadoscod_item "numerico"numvenda "autonumeração" que já citei logo acima...nomecli "texto"Tabela Item: tipo de dadosnum_venda "númerico"cod_item "numerico"descrpord "texto"valorunit "numerico"valortotal "numerico"Ai relacionei as duas tabelas fazendo um 1 para muitos da seguinte fôrma:num_venda (chave primaria) relacionada com numvendaAi lá na adoquery fiz a select * from item where "cod_item=:cod_item;Só que ai fica somando toda a tabela e não por cada clienteTentei tb fazer um where pelo campo "numvenda" só que ai na medida em que vou mexendo movimentando pelos dados vejo que vai acrecentando um valor que vai aparecendo no dbtext. Não mais o que pensar... me ajude por favor Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 4, 2009 Denunciar Share Postado Março 4, 2009 Tabela vendacli: Tipo de Dadoscod_item "numerico"numvenda "autonumeração" que já citei logo acima...nomecli "texto"Tabela Item: tipo de dadosnum_venda "númerico"cod_item "numerico"descrpord "texto"valorunit "numerico"valortotal "numerico"Ai relacionei as duas tabelas fazendo um 1 para muitos da seguinte fôrma:num_venda (chave primaria) relacionada com numvendaMesfistofeles, tenho a impressão que aquele cod_item na tabela vendacli está sobrando.Como você diz, a relação entre elas é feita pelo campo num_venda e aquele campo só faz sentido na tabela de itens mesmo.Ai lá na adoquery fiz a select * from item where cod_item=:cod_item;Só que ai fica somando toda a tabela e não por cada clientebaseado na relação citada acima, este select não está correto mesmo. Deveria ser:select * from item where num_venda = :num_vendaTentei tb fazer um where pelo campo "numvenda" só que ai na medida em que vou mexendo movimentando pelos dados vejo que vai acrecentando um valor que vai aparecendo no dbtext. Não mais o que pensar...Nem eu sei o que pensar sobre este comentário. Não entendi o que você quiz dizer.Quando você estabelece a relação dos datasets via propriedade DataSource ou MasterSource (depende de que tipo de dataset você usa), é natural que ao mexer o dataset principal (master), o dataset dependente (detail) seja reposicionado (normalmente no início). Assim, para entender melhor este seu último "sentimento", seria necessário saber como voce está "amarrando" os datasets na sua aplicação e que componentes você está usando para a visualização dos dados (se possível uma imagem do layout para uma noção mais correta).Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mesfistofeles Postado Março 5, 2009 Autor Denunciar Share Postado Março 5, 2009 Tabela vendacli: Tipo de Dadoscod_item "numerico"numvenda "autonumeração" que já citei logo acima...nomecli "texto"Tabela Item: tipo de dadosnum_venda "númerico"cod_item "numerico"descrpord "texto"valorunit "numerico"valortotal "numerico"Ai relacionei as duas tabelas fazendo um 1 para muitos da seguinte fôrma:num_venda (chave primaria) relacionada com numvendaMesfistofeles, tenho a impressão que aquele cod_item na tabela vendacli está sobrando.Como você diz, a relação entre elas é feita pelo campo num_venda e aquele campo só faz sentido na tabela de itens mesmo.Ai lá na adoquery fiz a select * from item where cod_item=:cod_item;Só que ai fica somando toda a tabela e não por cada clientebaseado na relação citada acima, este select não está correto mesmo. Deveria ser:select * from item where num_venda = :num_vendaTentei tb fazer um where pelo campo "numvenda" só que ai na medida em que vou mexendo movimentando pelos dados vejo que vai acrecentando um valor que vai aparecendo no dbtext. Não mais o que pensar...Nem eu sei o que pensar sobre este comentário. Não entendi o que você quiz dizer.Quando você estabelece a relação dos datasets via propriedade DataSource ou MasterSource (depende de que tipo de dataset você usa), é natural que ao mexer o dataset principal (master), o dataset dependente (detail) seja reposicionado (normalmente no início). Assim, para entender melhor este seu último "sentimento", seria necessário saber como voce está "amarrando" os datasets na sua aplicação e que componentes você está usando para a visualização dos dados (se possível uma imagem do layout para uma noção mais correta).AbraçosOlá Micheus Boa noite !Acabei de resolver o problema de fato o campo cod_item estava "sobrando mesmo.COMO RESOLVIRetirei os clientdataset e mantive os adoquery, coloquei mais um e nomeei ele como "sum" ai fiz :Select sum (valorunit) as soma from item where num_venda=:num_venda;Ai funcionou. mas me ocorreu uma dúvida:Têm como eu fazer este select sum na aoquery items? porque lá eu fiz:Select * from item where num_venda=:num_venda;no caso o sum seria como ai? Ou é melhor manter assim mesmo ? No mais obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 5, 2009 Denunciar Share Postado Março 5, 2009 Select sum (valorunit) as soma from item where num_venda=:num_venda;Ai funcionou. mas me ocorreu uma dúvida:Têm como eu fazer este select sum na aoquery items? porque lá eu fiz:Select * from item where num_venda=:num_venda;no caso o sum seria como ai? Ou é melhor manter assim mesmo ?Mesfistofeles, o primeiro SQL irá somar todos os itens referentes a venda nun_venda, enquanto que o segundo irá "listar" todos os itens referentes a venda nun_venda - são duas coisas diferentes. Assim, acho que apenas você é quem podo responder a esta pergunta (não sabemos o que você quer fazer ou como você está usando estas informações).Supondo que você tenha uma tela onde no cabeçalho da venda queira mostrar o total dos itens, e abaixo mostre os itens num DBGrid (por exemplo), o uso do SQL exclusivo para fazer o sum pode ser uma opção. Mas também, poderia fazer a totalização criando um procedimento para somar cada item do dataset mostrado no DBGrid (sem o uso do outro SQL) e mostrar em um TEdit ou TLabel. São algumas as opções...Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mesfistofeles
Bom dia
Estou fazendo uma tela de venda mas na hora de inserir os produtos de um determinado cliente ele acaba somando com o valor do cliente anterior.
Quando movimento o dbnavigatos todos os campos mudam normalmente até mesmo o dbtext onde esta o campo aggregate do
clientdataset. Na select do adoquery que uso junto com o clientdataset fiz assim.
Select * from item where coditem=:codigoitem;
desde já agradeço a ajuda
Editado por MesfistofelesLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.