Boa noite a todos.
Tenho um código que calcula o saldo bancário de uma conta e monta uma lista com as operações de determinado período. Baixei este código na internet e fiz adaptações. Agora pretendo incluir um campo no formulário que exibe o saldo e os movimentos para que seja feita uma seleção dos registros por seu status (reconciliado ou não-reconciliado). Para isso pretendo utilizar um campo sim/não que já tenho na tabela e um quadro de opção com duas opções.
E o que não estou conseguindo fazer funcionar é a cláusula WHERE com o resultado do campo do formulário
'------------------------------------------------------------
' fncMontaSaldo
'------------------------------------------------------------
Public Function fncMontaSaldo()
Dim Rs As DAO.Recordset
Dim Acumulado As Double
Dim strsql As String
Dim critério As String
Dim d As Integer
'----------------------
'Limpeza
'---------------------
'Call fncLimpaCampos
'Me!tx1 = Null: Me!tx2 = Null
'---------------------------------------
'Desacopla listbox da tabela temporária
'---------------------------------------
Me!Lista.RowSource = ""
'--------------------------------------------------------------------------------------------------------------------
'Passa para a variavel "d" um dos valores (3,7,15,30,60,90) , dependendo da quantidade de dias escolhida no quadro
'--------------------------------------------------------------------------------------------------------------------
d = Switch(Me!Quadro = 1, 7, Me!Quadro = 2, 31, Me!Quadro = 3, 60, Me!Quadro = 4, 120, Me!Quadro = 5, 240, Me!Quadro = 6, 420)
'--------------------------------------------------
'Passa para a variavel o nome da tabela temporaria
'--------------------------------------------------
tblTemp = "tmp_tabSaldosBanco"
'------------------------------------------------------
'Monta a SQL que irá criar a tabela temporaria local
'-----------------------------------------------------
strsql = "SELECT TabContábilRegistros.*, Cdbl(0) as SaldoLinha "
strsql = strsql & "INTO " & tblTemp & " FROM TabContábilRegistros "
strsql = strsql & "WHERE (((CmpIdConta) = " & Me!ComboConta & ") And cdbl(CmpDataExtrato) > " & CDbl(Date - d) & ") ORDER BY CmpDataExtrato;"
'---------------------------------------------------
'Executa a função que irá cirar a tabela temporaria
'---------------------------------------------------
If fncCriarTabela(strsql, tblTemp, 102030) Then
'---------------------------------------------------------------------------------------------------------------------------------
'Passa o Saldo do Caixa para o campo txtSaldo
'O Saldo final é composto do saldo acumulado, que fica armazenado na tabela tblConfig, mais o saldo residual da tabela tblMovimento
'Este procedimento evita ter que somar os valores desde o primeiro registro lançado
'---------------------------------------------------------------------------------------------------------------------------------
Me!txtSaldo = DSum("[CmpValor]", "TabContábilRegistros", "[CmpIdConta] = " & Me!ComboConta & "")
Me!SaldoAnterior = Me!txtSaldo - Nz(DSum("[CmpValor]", tblTemp), 0)
Acumulado = Nz(Me!SaldoAnterior, 0)
'--------------------------------------------------------------------------------------------------
'Abre o recordset da tabela temporaria para calcular e salvar o saldo acumulado por linha(registro)
'Gravar o Saldo por linha facilita a montagem do ListBox e do Relatório
'--------------------------------------------------------------------------------------------------
Set Rs = CurrentDb.OpenRecordset("select * From " & tblTemp & " ORDER BY CmpDataExtrato, CmpDataEmissão")
Do While Not Rs.EOF
Acumulado = Acumulado + (Rs!CmpValor)
Rs.Edit
Rs!SaldoLinha = Acumulado
Rs.Update
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
'--------------------------------------------------------------
'Carrega a listbox com todos os registros da tabela temporaria
'--------------------------------------------------------------
Call fncCarregalista("CmpIdConta > 0")
End If
End Function
Tenho um código que calcula o saldo bancário de uma conta e monta uma lista com as operações de determinado período. Baixei este código na internet e fiz adaptações. Agora pretendo incluir um campo no formulário que exibe o saldo e os movimentos para que seja feita uma seleção dos registros por seu status (reconciliado ou não-reconciliado). Para isso pretendo utilizar um campo sim/não que já tenho na tabela e um quadro de opção com duas opções.
E o que não estou conseguindo fazer funcionar é a cláusula WHERE com o resultado do campo do formulário
'------------------------------------------------------------
' fncMontaSaldo
'------------------------------------------------------------
Public Function fncMontaSaldo()
Dim Rs As DAO.Recordset
Dim Acumulado As Double
Dim strsql As String
Dim critério As String
Dim d As Integer
'----------------------
'Limpeza
'---------------------
'Call fncLimpaCampos
'Me!tx1 = Null: Me!tx2 = Null
'---------------------------------------
'Desacopla listbox da tabela temporária
'---------------------------------------
Me!Lista.RowSource = ""
'--------------------------------------------------------------------------------------------------------------------
'Passa para a variavel "d" um dos valores (3,7,15,30,60,90) , dependendo da quantidade de dias escolhida no quadro
'--------------------------------------------------------------------------------------------------------------------
d = Switch(Me!Quadro = 1, 7, Me!Quadro = 2, 31, Me!Quadro = 3, 60, Me!Quadro = 4, 120, Me!Quadro = 5, 240, Me!Quadro = 6, 420)
'--------------------------------------------------
'Passa para a variavel o nome da tabela temporaria
'--------------------------------------------------
tblTemp = "tmp_tabSaldosBanco"
'------------------------------------------------------
'Monta a SQL que irá criar a tabela temporaria local
'-----------------------------------------------------
strsql = "SELECT TabContábilRegistros.*, Cdbl(0) as SaldoLinha "
strsql = strsql & "INTO " & tblTemp & " FROM TabContábilRegistros "
strsql = strsql & "WHERE (((CmpIdConta) = " & Me!ComboConta & ") And cdbl(CmpDataExtrato) > " & CDbl(Date - d) & ") ORDER BY CmpDataExtrato;"
'---------------------------------------------------
'Executa a função que irá cirar a tabela temporaria
'---------------------------------------------------
If fncCriarTabela(strsql, tblTemp, 102030) Then
'---------------------------------------------------------------------------------------------------------------------------------
'Passa o Saldo do Caixa para o campo txtSaldo
'O Saldo final é composto do saldo acumulado, que fica armazenado na tabela tblConfig, mais o saldo residual da tabela tblMovimento
'Este procedimento evita ter que somar os valores desde o primeiro registro lançado
'---------------------------------------------------------------------------------------------------------------------------------
Me!txtSaldo = DSum("[CmpValor]", "TabContábilRegistros", "[CmpIdConta] = " & Me!ComboConta & "")
Me!SaldoAnterior = Me!txtSaldo - Nz(DSum("[CmpValor]", tblTemp), 0)
Acumulado = Nz(Me!SaldoAnterior, 0)
'--------------------------------------------------------------------------------------------------
'Abre o recordset da tabela temporaria para calcular e salvar o saldo acumulado por linha(registro)
'Gravar o Saldo por linha facilita a montagem do ListBox e do Relatório
'--------------------------------------------------------------------------------------------------
Set Rs = CurrentDb.OpenRecordset("select * From " & tblTemp & " ORDER BY CmpDataExtrato, CmpDataEmissão")
Do While Not Rs.EOF
Acumulado = Acumulado + (Rs!CmpValor)
Rs.Edit
Rs!SaldoLinha = Acumulado
Rs.Update
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
'--------------------------------------------------------------
'Carrega a listbox com todos os registros da tabela temporaria
'--------------------------------------------------------------
Call fncCarregalista("CmpIdConta > 0")
End If
End Function