Ir para conteúdo
Fórum Script Brasil
  • 0

Select sum acumula no próximo insert [RESOLVIDO]


Mesfistofeles

Pergunta

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 Mesfistofeles
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
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.

Link para o comentário
Compartilhar em outros sites

  • 0
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 campos

Tabela vendacli: Tipo de Dados

cod_item "numerico"

numvenda "autonumeração" que já citei logo acima...

nomecli "texto"

Tabela Item: tipo de dados

num_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 numvenda

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 cliente

Tentei 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

Link para o comentário
Compartilhar em outros sites

  • 0
Tabela vendacli: Tipo de Dados

cod_item "numerico"

numvenda "autonumeração" que já citei logo acima...

nomecli "texto"

Tabela Item: tipo de dados

num_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 numvenda

Mesfistofeles, 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 cliente

baseado na relação citada acima, este select não está correto mesmo. Deveria ser:

select * from item where num_venda = :num_venda

Tentei 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

Link para o comentário
Compartilhar em outros sites

  • 0
Tabela vendacli: Tipo de Dados

cod_item "numerico"

numvenda "autonumeração" que já citei logo acima...

nomecli "texto"

Tabela Item: tipo de dados

num_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 numvenda

Mesfistofeles, 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 cliente

baseado na relação citada acima, este select não está correto mesmo. Deveria ser:

select * from item where num_venda = :num_venda

Tentei 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

Olá Micheus Boa noite !

Acabei de resolver o problema de fato o campo cod_item estava "sobrando mesmo.

COMO RESOLVI

Retirei 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.

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...