SOMAR CAMPO COM COMANDO SQL

CYBERMAC 02/10/2015 12:51:10
#452099
Pessoal,

Boa tarde!

Por favor, preciso da ajuda dos universitários na seguinte questão:

Preciso fazer com que minha aplicação faça o fechamento de caixa do dia e traga o valor de entrada e saída de caixa, para isso usei a seguinte instrução SQL em Banco ACCESS.

Private Sub btnencerrar_Click()
Dim mentrada, msaida, msaldocaixa, mvrentrada, mvrsaida As Double
If MsgBox([Ô]Confirma encerramento de caixa do dia [Ô] & Date & [Ô]?[Ô], vbQuestion + vbYesNo, [Ô]Movimento de Caixa[Ô]) = vbYes Then
sqlfecha = [Ô]SELECT DISTINCTROW [MovCaixa].[IdCaixa], [MovCaixa].[Data], [MovCaixa].[ValorDiaria], [MovCaixa].[ValorConsumo],[Ô] & _
[Ô][MovCaixa].[FormaPagamento], [MovCaixa].[ValorReceber], [MovCaixa].[Codigo], [MovCaixa].[TaxaAdm], [Ô] & _
[Ô][MovCaixa].[TaxaReserva], [MovCaixa].[IdReserva], [MovCaixa].[CPF], [MovCaixa].[NomeCartao], [Ô] & _
[Ô]Sum([MovCaixa].[ValorRecebido]) AS [mentrada], Sum([MovCaixa].[ValorSaida]) AS [msaida] [Ô] & _
[Ô]FROM MovCaixa WHERE MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
datafechamento.RecordSource = sqlfecha
datafechamento.Refresh

msaldocaixa = mentrada - msaida
Label2 = [Ô]Valor Entrada..: [Ô] & Format(mentrada, [Ô]currency[Ô]) & vbNewLine & _
[Ô]Valor Saída....: [Ô] & Format(msaida, [Ô]currency[Ô]) & vbNewLine & _
[Ô]Saldo do Caixa.: [Ô] & Format(msaldo, [Ô]currency[Ô])
TSaldoCaixa.Index = [Ô]IdxMovDataCaixa[Ô]
TSaldoCaixa.Seek [Ô]=[Ô], Date
If TSaldoCaixa.NoMatch Then
Else
TSaldoCaixa.Edit
TSaldoCaixa([Ô]saldofinal[Ô]) = msaldocaixa
TSaldoCaixa.Update
End If
If MsgBox([Ô]Imprimir fechamento de caixa?[Ô], vbQuestion + vbYesNo, [Ô]Movimento de Caixa[Ô]) = vbYes Then
rptcaixa.WindowState = crptMaximized
rptcaixa.WindowTitle = [Ô]Relatório de Fechamento de Caixa[Ô]
rptcaixa.ReportFileName = App.Path & [Ô]\Relatorios\RelFechaCaixa.RPT[Ô]
rptcaixa.RetrieveDataFiles
rptcaixa.Action = 1
Else
Exit Sub
End If
Else
Exit Sub
End If
End Sub

Ao executar a rotina a seguinte mensagem de erro aparece. [txt-color=#e80000]you tried execute query that doesn[ô]t include the specified expression IdCaixa as part of an aggregate function[/txt-color]

O que fazer?

Grato pela ajuda.
JABA 02/10/2015 13:07:38
#452100
Retire o DISTINCTROW dá sua consulta e verifique se assim vai.
PLUGSOFTSM 03/10/2015 08:40:55
#452141
Resposta escolhida
Para essa consulta funcionar, vc precisa usar ela assim

[Ô]SELECT IdCaixa, Data, ValorDiaria, ValorConsumo,FormaPagamento, ValorReceber, Codigo, TaxaAdm, TaxaReserva,
IdReserva, CPF, NomeCartao, Sum(ValorRecebido) AS mentrada, Sum(ValorSaida) AS msaida FROM MovCaixa WHERE
MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]# Group By IdCaixa, Data, ValorDiaria, ValorConsumo,FormaPagamento,
ValorReceber, Codigo, TaxaAdm, TaxaReserva,IdReserva, CPF, NomeCartao[Ô]

só que nesse caso, a consulta poderá retornar muitas linhas... então a solução seria desmembrar a consulta em duas:
Primeiro faça assim
[Ô]SELECT DISTINCTROW IdCaixa, Data, ValorDiaria, ValorConsumo,FormaPagamento, ValorReceber, Codigo, TaxaAdm, TaxaReserva,
IdReserva, CPF, NomeCartao FROM MovCaixa WHERE MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]

e depois faça outra
[Ô]SELECT Sum(ValorRecebido) AS mentrada, Sum(ValorSaida) AS msaida FROM MovCaixa WHERE
MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]

Provavelmente vai resolver teu problema
CYBERMAC 09/10/2015 14:00:35
#452378
Citação:

:
Para essa consulta funcionar, vc precisa usar ela assim

[Ô]SELECT IdCaixa, Data, ValorDiaria, ValorConsumo,FormaPagamento, ValorReceber, Codigo, TaxaAdm, TaxaReserva,
IdReserva, CPF, NomeCartao, Sum(ValorRecebido) AS mentrada, Sum(ValorSaida) AS msaida FROM MovCaixa WHERE
MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]# Group By IdCaixa, Data, ValorDiaria, ValorConsumo,FormaPagamento,
ValorReceber, Codigo, TaxaAdm, TaxaReserva,IdReserva, CPF, NomeCartao[Ô]

só que nesse caso, a consulta poderá retornar muitas linhas... então a solução seria desmembrar a consulta em duas:
Primeiro faça assim
[Ô]SELECT DISTINCTROW IdCaixa, Data, ValorDiaria, ValorConsumo,FormaPagamento, ValorReceber, Codigo, TaxaAdm, TaxaReserva,
IdReserva, CPF, NomeCartao FROM MovCaixa WHERE MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]

e depois faça outra
[Ô]SELECT Sum(ValorRecebido) AS mentrada, Sum(ValorSaida) AS msaida FROM MovCaixa WHERE
MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]

Provavelmente vai resolver teu problema



Amigo PLUGSOFTSM,

A mensagem de erro agora é na cláusula FROM, diz que a sintaxe está incorreta.
KERPLUNK 10/10/2015 00:25:26
#452400
IdCaixa provavelmente é campo chave. Você precisa usar agrupar por ele com a cláusula GROUP BY
PLUGSOFTSM 10/10/2015 08:03:44
#452401
O erro acontece na primeira ou na segunda consulta...?
Qual mensagem de erro?
Verifica se vc não tem campo data com valores nulos na coluna... se tiver, vai dar erro... dai vc tem que alterar a consulta e usar algo assim

WHERE not isnull(movcaixa.data) and MovCaixa.Data =#[Ô] & Format(Date, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]

Não tenho bem certeza se o teste de nulos no access é assim

Posta a mensagem de erro aqui que te ajudo
CYBERMAC 13/10/2015 11:13:40
#452449
Pessoal,

Bom dia!

Segue meu projeto completo.

O erro dá nos 2 select[ô]s

O nome do formulário é FRMCAIXA e o botão que executa a função é btnfechamento

Link para download: http://we.tl/42dDZM68Gl
Tópico encerrado , respostas não são mais permitidas