Galera, boa tarde
Acredito que possam me ajudar nesse erro que estou tendo no meu formulário:
1. Preciso que o formulário seja finalizado sempre que o mesmo atingir o número máximo de análises efetuadas, estou utilizando o seguinte código evento Form_current():
Porém, quando executo o mesmo, apresenta erro em tempo de execução.
Sabem me dizer o que pode ser?
a condição para sair do formulário é quando o i = imax
Abs
Acredito que possam me ajudar nesse erro que estou tendo no meu formulário:
1. Preciso que o formulário seja finalizado sempre que o mesmo atingir o número máximo de análises efetuadas, estou utilizando o seguinte código evento Form_current():
- Código:
Private Sub Form_Current()
Dim i, iMax As Long 'i é o contador e iMax é o máximo de análises permitido
Dim A, B, C, MT As Double
Dim strCNT, strINS, strCLS, strSQL, strUPD, strSEL As String
'------------------------------------------------------------------------------------------------------------------------------
'Verificando quantos registros foram digitados para essa análise
strCNT = "SELECT Count(tbl_regdeganalisesi.analista) AS contagem " & _
"FROM tbl_regdeganalisesi " & _
"GROUP BY tbl_regdeganalisesi.nrlote, tbl_regdeganalisesi.lotesq, tbl_regdeganalisesi.analista, tbl_regdeganalisesi.nrordem " & _
"HAVING (((tbl_regdeganalisesi.nrlote)=" & Me.nrlote & ") AND ((tbl_regdeganalisesi.lotesq)=" & Me.lotesq & ") AND ((tbl_regdeganalisesi.nrordem)=" & Me.nrordem & "));"
Set db = CurrentDb
Set rs = db.OpenRecordset(strCNT)
i = 0
Do While Not rs.EOF
i = i + 1
rs.MoveNext
Loop
'Verificando qual o número máximo de análises possíveis
iMax = Nz(DCount("[cod_degustador]", "tbl_cfg_degustadores", "[dias]=" & Me.txtDias & " AND [ativo]=true"), 0)
'------------------------------------------------------------------------------------------------------------------------------
If i = iMax Then
MsgBox "Não é possível digitar mais análises para esse registro." & vbNewLine + vbNewLine & _
"Atualizando registros." & vbNewLine + vbNewLine & "Por favor FECHE esse formulário."
'Limpo as análises da tabela tbl_ctqparcfganalises, deixando disponível para próxima avaliação
strCLS = "UPDATE tbl_ctqparcfganalises SET nota='', observacao='' " & _
"WHERE nota is not null;"
DoCmd.RunSQL strCLS
'-----------------------------------------------------------------------------------------
'Soma as notas com tipo de Análise = A
A = DSum("[nota]", "tbl_regdeganalisesi", "[nrlote]=" & Me.nrlote & " AND [lotesq]=" & Me.lotesq & " AND [nrordem]=" & Me.nrordem & " AND [dianls]=" & Me.dianls & " AND [tpanalise]='A'")
'Soma as notas com tipo de Análise = B
B = DSum("[nota]", "tbl_regdeganalisesi", "[nrlote]=" & Me.nrlote & " AND [lotesq]=" & Me.lotesq & " AND [nrordem]=" & Me.nrordem & " AND [dianls]=" & Me.dianls & " AND [tpanalise]='B'")
'Soma as notas com tipo de Análise = C
C = DSum("[nota]", "tbl_regdeganalisesi", "[nrlote]=" & Me.nrlote & " AND [lotesq]=" & Me.lotesq & " AND [nrordem]=" & Me.nrordem & " AND [dianls]=" & Me.dianls & " AND [tpanalise]='C'")
'Calcula a média da soma de A + B - C e divide pelo número de análises efetuadas
MT = (A + B - C) / i
'atualizo o status da tabela tbl_regdeganalisesc
strUPD = "UPDATE tbl_regdeganalisesc SET dtrealizada='" & Date & "', hrealizada='" & Time() & "', status =9, notafinal=" & Replace(MT, ",", ".") & " " & _
"WHERE nrlote=" & Me.nrlote & " AND lotesq=" & Me.lotesq & " AND dianls=" & Me.dianls & " AND nrordem=" & Me.nrordem & ";"
DoCmd.RunSQL strUPD
'-----------------------------------------------------------------------------------------
Forms![FRM_CTQManApontar_Filtro].Recalc
DoCmd.Close
'-----------------------------------------------------------------------------------------
End If
End Sub
Porém, quando executo o mesmo, apresenta erro em tempo de execução.
Sabem me dizer o que pode ser?
a condição para sair do formulário é quando o i = imax
Abs