então tenho um codigo pra fazer resumo do movimento financeiro..
tenho um form onde eu defino a data inicial e a data final do que será pesquisado e um botao pra gerar a saida do resultado:
Private Sub BT_PRINT_Click()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set conn = CurrentProject.Connection
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT Format([DT_HR],""dd/mm/yyyy"") AS DATA, FORMAS_PGTO.FORMA, Sum(PEDIDOS_PGTOS.Val) AS TOTAL " & _
"FROM (PEDIDOS_PGTOS INNER JOIN PEDIDOS ON PEDIDOS_PGTOS.COD_PED = PEDIDOS.COD_PED) INNER JOIN FORMAS_PGTO ON PEDIDOS_PGTOS.FORMA = FORMAS_PGTO.COD_FORMA " & _
"GROUP BY Format([DT_HR],""dd/mm/yyyy""), FORMAS_PGTO.FORMA " & _
"HAVING (((Format([DT_HR],""dd/mm/yyyy"")) BETWEEN #" & Me.DT_IN & "# AND #" & Me.DT_OUT & "#)) " & _
"ORDER BY Format([DT_HR],""dd/mm/yyyy"") DESC , FORMAS_PGTO.FORMA"
Set rs = cmd.Execute
port = DLookup("[prnport]", "app")
fanta = DLookup("[fant]", "config")
If rs.BOF And rs.EOF Then
MsgBox "Não existe movimento no período selecionado!", vbInformation, "Extratos e Movimentos"
GoTo SAIR
End If
'Open port For Output As #1
Debug.Print fanta
Debug.Print "------------------------------------------------"
Debug.Print " RESUMO DE MOVIMENTO "
Debug.Print "------------------------------------------------"
Debug.Print "PERIODO: DE " & Format(Me.DT_IN, "DD/MM/YY") & " ATÉ " & Format(Me.DT_OUT, "DD/MM/YY")
Debug.Print ""
rs.MoveFirst
DATAV = rs("data")
datac = rs("data")
Do While Not rs.EOF
If rs("data") = DATAV Then
Debug.Print rs("data")
Do While datac = DATAV
Debug.Print Replace(rs("FORMA") & Space(32 - Len(rs("FORMA")) + Len(Format(rs("TOTAL"), "CURRENCY"))), " ", ".") & Format(rs("TOTAL"), "CURRENCY")
rs.MoveNext
If rs.EOF Then
GoTo TERMINA
End If
datac = rs("DATA")
Loop
Else
T_DIA = DLookup("[DTOTAL]", "FEC_T_DIA", "[DATA] = " & "#" & DATAV & "#")
Debug.Print "TOTAL" & Replace(Space(43 - Len(Format(T_DIA, "CURRENCY"))), " ", ".") & Format(T_DIA, "CURRENCY")
Debug.Print " "
DATAV = rs("data")
End If
Loop
TERMINA:
T_DIA = DLookup("[DTOTAL]", "FEC_T_DIA", "[DATA] = " & "#" & DATAV & "#")
Debug.Print "TOTAL" & Replace(Space(43 - Len(Format(T_DIA, "CURRENCY"))), " ", ".") & Format(T_DIA, "CURRENCY")
FORMA_TG = DLookup("[TG]", "FEC_TG_FORMA")
Debug.Print ""
Debug.Print "TOTAL GERAL DO PERIODO" & Replace(Space(26 - Len(Format(FORMA_TG, "CURRENCY"))), " ", ".") & Format(FORMA_TG, "CURRENCY")
Debug.Print "IMPRESSO EM " & Now()
'Close #1
SAIR:
cmd.ActiveConnection.Close
Set rs = Nothing
Set cmd = Nothing
Set conn = Nothing
End Sub
pra evitar gastar papel nos testes, to usando debug.print pra ver o resultado..
então, olha essa:
nas tabelas de dados, tenho movimentos em apenas 3 datas..
21/07/2011
22/07/2011
24/07/2011
se eu seleciono entre 01/07/2011 e 31/07/2011 da esse resultado:
Restaurante La Fazendinha
------------------------------------------------
RESUMO DE MOVIMENTO
------------------------------------------------
PERIODO: DE 01/08/11 ATÉ 31/08/11
24/07/2011
DINHEIRO................................R$ 50,00
TOTAL...................................R$ 50,00
22/07/2011
DINHEIRO................................R$ 50,00
VISA....................................R$ 25,00
TOTAL...................................R$ 75,00
21/07/2011
CHEQUE..................................R$ 33,00
DINHEIRO................................R$ 17,00
TOTAL...................................R$ 50,00
TOTAL GERAL DO PERIODO.................R$ 175,00
IMPRESSO EM 11/08/2011 10:05:11
não deveria acontecer isso.. pois no mes 08 não tem movimento.
se eu seleciono 01/07/2011 e 01/08/2011 ele diz que não há movimento, sendo que existe..
se eu seleciono somente as datas que tem, ele da o retorno certo..
Pergunta
Humm
então tenho um codigo pra fazer resumo do movimento financeiro..
tenho um form onde eu defino a data inicial e a data final do que será pesquisado e um botao pra gerar a saida do resultado:
pra evitar gastar papel nos testes, to usando debug.print pra ver o resultado.. então, olha essa: nas tabelas de dados, tenho movimentos em apenas 3 datas.. 21/07/2011 22/07/2011 24/07/2011 se eu seleciono entre 01/07/2011 e 31/07/2011 da esse resultado:não deveria acontecer isso.. pois no mes 08 não tem movimento.
se eu seleciono 01/07/2011 e 01/08/2011 ele diz que não há movimento, sendo que existe..
se eu seleciono somente as datas que tem, ele da o retorno certo..
porque a sql ora funciona ora não?
Link para o comentário
Compartilhar em outros sites
10 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.