SOMAR CAMPO COM COMANDO SQL
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.
[Ô]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
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.
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
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