Tenho uma rotina ( listada abaixo) que executa normalmente em várias máquinas mas em uma determinada máquina apresenta o erro acima .
Cabe notar que não existe nela nenhuma instrução WITH.
O que pode ser ?
Private Sub botãobalancete_Click()
Dim ValorA, ValorC, ValorT As Double
Dim valordeduçõesc111 As Double
Dim valordeduçõesc112 As Double
Dim valordeduçõesc117 As Double
Dim checaerro As Variant
Dim percdedução As Double
On Error GoTo Err_botãobalancete_Click
strSQL = "select sum(crédito) from Movimento"
strSQL = strSQL & " where year(DATA) = " & Val(AnoProcess)
strSQL = strSQL & " And Month(Data) = " & Val(MesProcess)
strSQL = strSQL & " and código = 'C111'"
strSQL = strSQL & " and rateio = 'R'"
Set rst = dbs.OpenRecordset(strSQL)
checaerro = Nz(rst(0).Value, -1)
If rst.RecordCount = 0 Or checaerro = -1 Then
valordeduçõesc111 = 0
Else
valordeduçõesc111 = rst(0)
End If
strSQL = "select sum(crédito) from Movimento"
strSQL = strSQL & " where year(DATA) = " & Val(AnoProcess)
strSQL = strSQL & " And Month(Data) = " & Val(MesProcess)
strSQL = strSQL & " and código = 'C112'"
strSQL = strSQL & " and rateio = 'R'"
Set rst = dbs.OpenRecordset(strSQL)
checaerro = Nz(rst(0).Value, -1)
If rst.RecordCount = 0 Or checaerro = -1 Then
valordeduçõesc112 = 0
Else
valordeduçõesc112 = rst(0)
End If
strSQL = "select sum(crédito) from Movimento"
strSQL = strSQL & " where year(DATA) = " & Val(AnoProcess)
strSQL = strSQL & " And Month(Data) = " & Val(MesProcess)
strSQL = strSQL & " and código = 'C117'"
strSQL = strSQL & " and rateio = 'R'"
Set rst = dbs.OpenRecordset(strSQL)
checaerro = Nz(rst(0).Value, -1)
If rst.RecordCount = 0 Or checaerro = -1 Then
valordeduçõesc117 = 0
Else
valordeduçõesc117 = rst(0)
End If
' Close rst
Screen.MousePointer = 11
strSQL = "DELETE * FROM BALANCETE "
dbs.Execute (strSQL)
strSQL = "SELECT * FROM FLUXO "
strSQL = strSQL & " WHERE year([FLUXO].[Data]) = " & (AnoProcess)
strSQL = strSQL & " And Month([FLUXO].[Data]) = " & (MesProcess)
strSQL = strSQL & " order by ([FLUXO].[Conta]) "
Set rst = dbs.OpenRecordset(strSQL)
rst.MoveLast
Total = rst.RecordCount
rst.MoveFirst
strSQL2 = "SELECT * FROM PLANO "
strSQL2 = strSQL2 & " WHERE RIGHT(CÓDIGO,2) <> '00'"
strSQL2 = strSQL2 & " order by código"
Set rst2 = dbs.OpenRecordset(strSQL2)
rst2.MoveFirst
For N = 0 To Total - 1
Do While rst(1) > rst2(0)
' grava no balancete, TODAS as contas do Plano que não estão no fluxo.
strSQL = "INSERT INTO BALANCETE (Data, Conta, Descrição, Grupo, GrupoDescr, "
strSQL = strSQL & " ValorFluxo, ValorBalanc, Empresa, Balancete)"
strSQL = strSQL & " VALUES ('" & Format(rst(0), "dd/mm/yyyy") & "', "
strSQL = strSQL & " '" & rst2(0) & "', "
strSQL = strSQL & " '" & rst2(1) & "', "
strSQL = strSQL & " '" & rst(3) & "', "
strSQL = strSQL & " '" & rst(4) & "', "
strSQL = strSQL & " " & 0 & ","
strSQL = strSQL & " " & "''" & ","
strSQL = strSQL & " '" & rst(7) & "', "
If rst2(2) = True Then
strSQL = strSQL & " True)"
Else
strSQL = strSQL & " True)"
End If
dbs.Execute (strSQL)
rst2.MoveNext
If rst2.EOF Then
rst2.MovePrevious
End If
Loop
strSQL = "INSERT INTO BALANCETE (Data, Conta, Descrição, Grupo, GrupoDescr, "
strSQL = strSQL & " ValorFluxo, ValorBalanc, Empresa, Balancete)"
strSQL = strSQL & " VALUES ('" & Format(rst(0), "dd/mm/yyyy") & "', "
strSQL = strSQL & " '" & rst(1) & "', "
strSQL = strSQL & " '" & rst(2) & "', "
strSQL = strSQL & " '" & rst(3) & "', "
strSQL = strSQL & " '" & rst(4) & "', "
strSQL = strSQL & " '" & rst(5) & "', "
strSQL = strSQL & " " & "''" & ","
strSQL = strSQL & " '" & rst(7) & "', "
If rst2(2) = True Then
strSQL = strSQL & " True)"
Else
strSQL = strSQL & " False)"
End If
dbs.Execute (strSQL)
' End If
' End If
rst.MoveNext
If rst.EOF Then
rst.MovePrevious
End If
rst2.MoveNext
If rst2.EOF Then
rst2.MovePrevious
End If
Next N
Set dbs = Nothing
MsgBox "Balancete atualizado pelo Fluxo de Caixa. Verifique.", vbInformation, Apelido
Exit_botãobalancete_Click:
Screen.MousePointer = 0
Exit Sub
Err_botãobalancete_Click:
MsgBox Err.Description
Resume Exit_botãobalancete_Click
End Sub
Cabe notar que não existe nela nenhuma instrução WITH.
O que pode ser ?
Private Sub botãobalancete_Click()
Dim ValorA, ValorC, ValorT As Double
Dim valordeduçõesc111 As Double
Dim valordeduçõesc112 As Double
Dim valordeduçõesc117 As Double
Dim checaerro As Variant
Dim percdedução As Double
On Error GoTo Err_botãobalancete_Click
strSQL = "select sum(crédito) from Movimento"
strSQL = strSQL & " where year(DATA) = " & Val(AnoProcess)
strSQL = strSQL & " And Month(Data) = " & Val(MesProcess)
strSQL = strSQL & " and código = 'C111'"
strSQL = strSQL & " and rateio = 'R'"
Set rst = dbs.OpenRecordset(strSQL)
checaerro = Nz(rst(0).Value, -1)
If rst.RecordCount = 0 Or checaerro = -1 Then
valordeduçõesc111 = 0
Else
valordeduçõesc111 = rst(0)
End If
strSQL = "select sum(crédito) from Movimento"
strSQL = strSQL & " where year(DATA) = " & Val(AnoProcess)
strSQL = strSQL & " And Month(Data) = " & Val(MesProcess)
strSQL = strSQL & " and código = 'C112'"
strSQL = strSQL & " and rateio = 'R'"
Set rst = dbs.OpenRecordset(strSQL)
checaerro = Nz(rst(0).Value, -1)
If rst.RecordCount = 0 Or checaerro = -1 Then
valordeduçõesc112 = 0
Else
valordeduçõesc112 = rst(0)
End If
strSQL = "select sum(crédito) from Movimento"
strSQL = strSQL & " where year(DATA) = " & Val(AnoProcess)
strSQL = strSQL & " And Month(Data) = " & Val(MesProcess)
strSQL = strSQL & " and código = 'C117'"
strSQL = strSQL & " and rateio = 'R'"
Set rst = dbs.OpenRecordset(strSQL)
checaerro = Nz(rst(0).Value, -1)
If rst.RecordCount = 0 Or checaerro = -1 Then
valordeduçõesc117 = 0
Else
valordeduçõesc117 = rst(0)
End If
' Close rst
Screen.MousePointer = 11
strSQL = "DELETE * FROM BALANCETE "
dbs.Execute (strSQL)
strSQL = "SELECT * FROM FLUXO "
strSQL = strSQL & " WHERE year([FLUXO].[Data]) = " & (AnoProcess)
strSQL = strSQL & " And Month([FLUXO].[Data]) = " & (MesProcess)
strSQL = strSQL & " order by ([FLUXO].[Conta]) "
Set rst = dbs.OpenRecordset(strSQL)
rst.MoveLast
Total = rst.RecordCount
rst.MoveFirst
strSQL2 = "SELECT * FROM PLANO "
strSQL2 = strSQL2 & " WHERE RIGHT(CÓDIGO,2) <> '00'"
strSQL2 = strSQL2 & " order by código"
Set rst2 = dbs.OpenRecordset(strSQL2)
rst2.MoveFirst
For N = 0 To Total - 1
Do While rst(1) > rst2(0)
' grava no balancete, TODAS as contas do Plano que não estão no fluxo.
strSQL = "INSERT INTO BALANCETE (Data, Conta, Descrição, Grupo, GrupoDescr, "
strSQL = strSQL & " ValorFluxo, ValorBalanc, Empresa, Balancete)"
strSQL = strSQL & " VALUES ('" & Format(rst(0), "dd/mm/yyyy") & "', "
strSQL = strSQL & " '" & rst2(0) & "', "
strSQL = strSQL & " '" & rst2(1) & "', "
strSQL = strSQL & " '" & rst(3) & "', "
strSQL = strSQL & " '" & rst(4) & "', "
strSQL = strSQL & " " & 0 & ","
strSQL = strSQL & " " & "''" & ","
strSQL = strSQL & " '" & rst(7) & "', "
If rst2(2) = True Then
strSQL = strSQL & " True)"
Else
strSQL = strSQL & " True)"
End If
dbs.Execute (strSQL)
rst2.MoveNext
If rst2.EOF Then
rst2.MovePrevious
End If
Loop
strSQL = "INSERT INTO BALANCETE (Data, Conta, Descrição, Grupo, GrupoDescr, "
strSQL = strSQL & " ValorFluxo, ValorBalanc, Empresa, Balancete)"
strSQL = strSQL & " VALUES ('" & Format(rst(0), "dd/mm/yyyy") & "', "
strSQL = strSQL & " '" & rst(1) & "', "
strSQL = strSQL & " '" & rst(2) & "', "
strSQL = strSQL & " '" & rst(3) & "', "
strSQL = strSQL & " '" & rst(4) & "', "
strSQL = strSQL & " '" & rst(5) & "', "
strSQL = strSQL & " " & "''" & ","
strSQL = strSQL & " '" & rst(7) & "', "
If rst2(2) = True Then
strSQL = strSQL & " True)"
Else
strSQL = strSQL & " False)"
End If
dbs.Execute (strSQL)
' End If
' End If
rst.MoveNext
If rst.EOF Then
rst.MovePrevious
End If
rst2.MoveNext
If rst2.EOF Then
rst2.MovePrevious
End If
Next N
Set dbs = Nothing
MsgBox "Balancete atualizado pelo Fluxo de Caixa. Verifique.", vbInformation, Apelido
Exit_botãobalancete_Click:
Screen.MousePointer = 0
Exit Sub
Err_botãobalancete_Click:
MsgBox Err.Description
Resume Exit_botãobalancete_Click
End Sub