Boas tardes caros amigos,
Não encontrei referência a um problema que não consigo solucionar, que é o facto de necessitar incluir num ciclo do while uma opção if-else.
Ao abrir um formulário insiro o código abaixo indicado. O problema é que a filtragem funciona "If Forms![Frm_Confirma_Existencia_Lanca_Entregue]![NR_Autorizacao] = 0 Then" pois já alterei para "<>0" e apenas mostrou a segunda msgbox. Se correr como está mostra-me ambas as msg box!!! O que está errado,devendo apenas executar o primeiro ciclo do if e depois saír.
Alguém me pode ajudar e descobrir o que está errado?
Código:
' Encontrar os registos no intervalo entre o 1º e último registo consoante o critério
DoCmd.GoToRecord , , acFirst
Me.primeiro = Me.ID
DoCmd.GoToRecord , , acLast
Me.ultimo = Me.ID
DoCmd.GoToRecord , , acFirst
' Rotina que cria nono registo na tabela caso não exista ou actualiza os valores caso já exista o registo
Dim espaco As Integer
[espaco] = [primeiro]
Me.GuardaLimDiario = Me.LimiteDiario
Do While espaco <= Me.ultimo
espaco = ID
DoCmd.OpenForm "Frm_Confirma_Existencia_Lanca_Entregue", acNormal, "", "", , acWindowNormal
If Forms![Frm_Confirma_Existencia_Lanca_Entregue]![NR_Autorizacao] = 0 Then
DoCmd.OpenQuery "Adicionar_Autorizacao_Selecionar_Dias", acViewNormal, acEdit
DoCmd.Close acForm, "Frm_Confirma_Existencia_Lanca_Entregue"
MsgBox "Mostra esta mensagem se o filtro MR_Autorização for 0...."
Else
[Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario] = ([Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario] + [GuardaLimDiario])
[Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![SaldoFinal] = ([Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario] - [Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![Peças_Cacadas])
[Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![PercentagemExito] = ([Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![Peças_Cacadas] / [Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario])
DoCmd.Close acForm, "Frm_Confirma_Existencia_Lanca_Entregue"
MsgBox "Mas não deveria mostrar esta mensagem se o filtro MR_Autorização for 0.... E está a mostrar!!!"
Exit Sub
End If
Loop
Um abraço,
Luis,
Não encontrei referência a um problema que não consigo solucionar, que é o facto de necessitar incluir num ciclo do while uma opção if-else.
Ao abrir um formulário insiro o código abaixo indicado. O problema é que a filtragem funciona "If Forms![Frm_Confirma_Existencia_Lanca_Entregue]![NR_Autorizacao] = 0 Then" pois já alterei para "<>0" e apenas mostrou a segunda msgbox. Se correr como está mostra-me ambas as msg box!!! O que está errado,devendo apenas executar o primeiro ciclo do if e depois saír.
Alguém me pode ajudar e descobrir o que está errado?
Código:
' Encontrar os registos no intervalo entre o 1º e último registo consoante o critério
DoCmd.GoToRecord , , acFirst
Me.primeiro = Me.ID
DoCmd.GoToRecord , , acLast
Me.ultimo = Me.ID
DoCmd.GoToRecord , , acFirst
' Rotina que cria nono registo na tabela caso não exista ou actualiza os valores caso já exista o registo
Dim espaco As Integer
[espaco] = [primeiro]
Me.GuardaLimDiario = Me.LimiteDiario
Do While espaco <= Me.ultimo
espaco = ID
DoCmd.OpenForm "Frm_Confirma_Existencia_Lanca_Entregue", acNormal, "", "", , acWindowNormal
If Forms![Frm_Confirma_Existencia_Lanca_Entregue]![NR_Autorizacao] = 0 Then
DoCmd.OpenQuery "Adicionar_Autorizacao_Selecionar_Dias", acViewNormal, acEdit
DoCmd.Close acForm, "Frm_Confirma_Existencia_Lanca_Entregue"
MsgBox "Mostra esta mensagem se o filtro MR_Autorização for 0...."
Else
[Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario] = ([Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario] + [GuardaLimDiario])
[Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![SaldoFinal] = ([Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario] - [Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![Peças_Cacadas])
[Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![PercentagemExito] = ([Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![Peças_Cacadas] / [Forms]![Frm_Confirma_Existencia_Lanca_Entregue]![LimiteDiario])
DoCmd.Close acForm, "Frm_Confirma_Existencia_Lanca_Entregue"
MsgBox "Mas não deveria mostrar esta mensagem se o filtro MR_Autorização for 0.... E está a mostrar!!!"
Exit Sub
End If
Loop
Um abraço,
Luis,
Última edição por luisev em 13/4/2011, 17:25, editado 1 vez(es)