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..
Question
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 to comment
Share on other sites
10 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.