CONSULTA EM DUAS TABELAS
Tenho duas tabelas
Caixa - entrada de valor de cada consultora
CodCons
Valor
SaiData
TabContatos - tabela das consultoras
CodiCont
NomeCont
Gostaria se somar o valor total de cada consultora num perÃodo da tabela caixa e apresentar no relatório
procurei na internet exemplos e não consigo montar quando coloco a opção sum no valor do caixa
strSql = [Ô]SELECT tabcontatos.NomeCont, [Ô]
strSql = strSql & [Ô]sum(caixa.valor) [Ô]
strSql = strSql & [Ô]FROM Caixa inner JOIN [Ô]
strSql = strSql & [Ô]tabcontatos ON caixa.codcons= [Ô]
strSql = strSql & [Ô]tabcontatos.codicont [Ô]
strSql = strSql & [Ô]WHERE caixa.SaiData BETWEEN #[Ô] & Format$(entrada, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format$(dtSaida, [Ô]mm/dd/yyyy[Ô]) & [Ô]# [Ô]
strSql = strSql & [Ô]GROUP BY caixa.codcons[Ô]
strSql = strSql & [Ô]ORDER BY sum(caixa.valor) asc;[Ô]
tentei de diversas formas tirando o group, retirando a ordem. Dá certo quando eu tiro a opção sum do caixa valor. Ele encontra todos os valores da consultora na tabela caixa mas gostaria de somar estes valores. Alguém tem alguma idéia de como posso fazer ou o que eu fiz de errado no programa acima?
grato,
Rodrigo
strSql = strSql & [Ô]sum(caixa.valor) as Total [Ô]
strSql = strSql & [Ô] FROM Caixa inner JOIN [Ô]
strSql = strSql & [Ô] tabcontatos ON caixa.codcons= [Ô]
strSql = strSql & [Ô] tabcontatos.codicont [Ô]
strSql = strSql & [Ô] WHERE caixa.SaiData BETWEEN #[Ô] & Format$(entrada, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format$(dtSaida, [Ô]mm/dd/yyyy[Ô]) & [Ô]# [Ô]
strSql = strSql & [Ô] GROUP BY tabcontatos.NomeCont [Ô]
strSql = strSql & [Ô] ORDER BY Total asc;[Ô]
FROM Caixa INNER JOIN TabContatos ON Caixa.CodCons = TabContatos.CodICont
GROUP BY Caixa.SaiData, TabContatos.NomeCont
HAVING (((Caixa.SaiData)>=#1/1/2012#<=#1/1/2012#));
Lembrando também que a consulta BETWEEN é um pouco mais lenta do que usar >=
Citação::
strSql = [Ô]SELECT tabcontatos.NomeCont, [Ô]
strSql = strSql & [Ô]sum(caixa.valor) as Total [Ô]
strSql = strSql & [Ô] FROM Caixa inner JOIN [Ô]
strSql = strSql & [Ô] tabcontatos ON caixa.codcons= [Ô]
strSql = strSql & [Ô] tabcontatos.codicont [Ô]
strSql = strSql & [Ô] WHERE caixa.SaiData BETWEEN #[Ô] & Format$(entrada, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format$(dtSaida, [Ô]mm/dd/yyyy[Ô]) & [Ô]# [Ô]
strSql = strSql & [Ô] GROUP BY tabcontatos.NomeCont [Ô]
strSql = strSql & [Ô] ORDER BY Total asc;[Ô]
obrigado pela respota mas está aparecendo um erro [Ô]Nenhum valor fornecido para um ou mais parâmetros necessários[Ô]
Citação::
SELECT TabContatos.NomeCont, Sum(Caixa.Valor) AS SumOfValor
FROM Caixa INNER JOIN TabContatos ON Caixa.CodCons = TabContatos.CodICont
GROUP BY Caixa.SaiData, TabContatos.NomeCont
HAVING (((Caixa.SaiData)>=#1/1/2012#<=#1/1/2012#));
Lembrando também que a consulta BETWEEN é um pouco mais lenta do que usar >=
Natanael, funcionou mais só agrupou os valores.
usei o strSql = [Ô]SELECT Caixa.CodCons, SUM(Caixa.Valor ) AS OrderTotal From [Caixa] GROUP BY Caixa.CodCons ORDER BY SUM(Caixa.Valor ) asc;[Ô]
e somou os valores da tabela mas no relatório mostra o codigo da consultora e o valor total o que ficou correto mas ta faltando mostrar o nome dela que se encontra na outra
tabela. Teria outra sugestão?
Você vai criar um outro campo na Tabela Caixa,
sendo ele [Ô]Caixa.CodCont[Ô].Faz um relacionamento
entre ele e o TabContatos.CodiCont.
Neste campo é onde vai ficar registrados o codicont da
tabela TabContatos.Todo novo registro que for incluido
na tabela caixa,tem que ter incluido o CodiCont da tabela Tabcontatos
no campo Caixa.CodCont.
strSql = [Ô]Select Caixa.Codcont,TabContatos.NomeCont,Caixa.Saidata,Sum(valor)as total from Caixa,TabContatos Where
caixa.codcont= tabcontatos.codicont Group by Codcont,TabContatos.NomeCont,saidata[Ô]
Tente assim e melhore.
Valeu.
Citação::
Vamos dar um empurrão.
Você vai criar um outro campo na Tabela Caixa,
sendo ele [Ô]Caixa.CodCont[Ô].Faz um relacionamento
entre ele e o TabContatos.CodiCont.
Neste campo é onde vai ficar registrados o codicont da
tabela TabContatos.Todo novo registro que for incluido
na tabela caixa,tem que ter incluido o CodiCont da tabela Tabcontatos
no campo Caixa.CodCont.
strSql = [Ô]Select Caixa.Codcont,TabContatos.NomeCont,Caixa.Saidata,Sum(valor)as total from Caixa,TabContatos Where
caixa.codcont= tabcontatos.codicont Group by Codcont,TabContatos.NomeCont,saidata[Ô]
dei uma modificada usando o campo que são iguais entre as duas tabelas
strSql = [Ô]Select Caixa.Codcons,TabContatos.NomeCont,Caixa.Saidata,Sum(valor)as total from Caixa,TabContatos Where caixa.codcons= tabcontatos.codicont Group by Codcons,TabContatos.NomeCont,saidata[Ô]
melhorou bastante mas ainda não está fazendo a soma dos valores por cada consultora
Tente assim e melhore.
Valeu.
obrigado pela ajuda
o campo código já existe na tabela caixa coloquei o código que enviou e ainda da esse erro [Ô]
[Ô]Nenhum valor fornecido para um ou mais parâmetros necessários[Ô][Ô]
e faça com escrevi.
Rodrigo eu fiz o teste aqui com os mesmos código que tu escreveu e da certo, porém tem que criar
este referido campo.Falo para você porque a birosca que eu tinha,registrava todas as notas fiscais
em uma tabela e a imagem da nota fiscal.Quando abria o formulário aparecia Número da nota,data,
valor total da nota e nome da nota.Quando dava um click na linha da nota desejada,aparecia um outro
formulario com imagem da notafical e todos os itens dela.
Do mesmo jeito que você quer eu fazia.
Valeu.
Verifique
Citação::
Mandei um exemplo para seu Email.
Verifique
obrigado pelo exemplo enviado.
vou dar uma olhada aqui.