FORUM_MaximoAccess
Uso Access 2003
Caros colegas, estou com mais uma bronca para resolver e conto com a ajuda de vocês, é o seguinte:
Após buscas neste Fórum, fiz algumas adaptações de alguns exemplos e dicas para as minhas necessidades, no entanto, não consegui o que pretendia que é:
- Incluir ou não um Novo Registro num Formulário Simples baseado em 1 Tabela sem Relacionamentos: A rotina verifica se alguns campos estão vazios, e em seguida verifica se o Registro é Novo, então pergunta se deseja salvar ou não; se não for um Novo Registro, verifica se houve alterações e pergunta se deseja salvar ou não essas alterações; no entanto, mesmo sendo um Novo Registro quando clico no Botão para Salvar o Registro (ver rotina no item 2 abaixo), esse Registro já está salvo, mesmo sem eu confirmar essa inclusão, visto que passa direto para a 2ª parte da rotina que pergunta se houve alterações e se deseja salvar, ou seja, como se já estivesse salvo.
A minha intenção: é quando ao clicar no Botão para Salvar ou Não o Registro, se a opção escolhida for “Não” sendo um Novo Registro, que o mesmo não seja incluido na Tabela, e sim desfeito todo o Registro que ainda se entende como Novo, o que não está ocorrendo visto que ele nem chega a executar essa pergunta, como já explicado acima.
1) Para inclusão de um Novo Registro uso um Botão com a seguinte rotina:
Private Sub NovoRegistro_Click()
DoCmd.GoToRecord , , acNewRec 'Incluir novo registro
Me!IDSetor.SetFocus
Exit_NovoRegistro_Click:
Exit Sub
Err_NovoRegistro_Click:
MsgBox Err.Description
Resume Exit_NovoRegistro_Click
End Sub
2) Para Salvar o Registro ou não, uso a rotina abaixo:
Private Sub SalvaRegistro_Click()
If IsNull(IDSetor) Or IsEmpty(IDSetor) Then
MsgBox "Falta Digitar o SETOR: Preenchimento obrigatório !!", vbInformation, "Alerta"
Cancel = True
Me.IDSetor.SetFocus
Exit Sub
ElseIf IsNull([IDEmitente]) Or IsEmpty([IDEmitente]) Then
MsgBox "Falta Digitar o NOME EMITENTE !", , "Validação de Campo"
Cancel = True
Me.IDEmitente.SetFocus
Exit Sub
ElseIf IsNull(NomeDestinatario) Or IsEmpty(NomeDestinatario) Then
MsgBox "Falta Digitar o NOME DO DESTINATÁRIO !", , "Validação de Campo"
Cancel = True
Me.NomeDestinatario.SetFocus
Exit Sub
ElseIf IsNull(Referencia) Or IsEmpty(Referencia) Then
MsgBox "Falta Digitar Texto em REFERÊNCIA!", , "Validação de Campo"
Cancel = True
Me.Referencia.SetFocus
Exit Sub
Else
If NewRecord Then 'VERIFICA SE O REGISTRO É NOVO
If MsgBox("Salvar o NOVO REGISTRO ?", vbYesNo, "Manutenção") = vbNo Then 'Questiona o salvamento para SIM OU NÃO
Me.Undo 'SE NÃO, CANCELA E DIZ QUE CANCELOU
MsgBox "Operação CANCELADA pelo Usuário", vbInformation
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
Exit Sub
Else 'SE SIM, SALVA O REGISTRO E DIZ QUE SALVOU
DoCmd.RunCommand acCmdSaveRecord
MsgBox "O NOVO REGISTRO foi Salvo com Sucesso !!", vbInformation
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
Exit Sub
End If
End If
Dim x As Integer
If (Me.Dirty = True) Then
Beep
x = MsgBox("Houve Alterações no Registro Atual, confirma Operação ?", vbYesNo, "Manutenção")
If x = vbNo Then 'SE RESPOSTA FOR: NÃO
Me.Undo
Me.Requery
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
DoCmd.GoToControl "NovoRegistro" 'VAI PARA O CONTROLE: 'NovoRegistro'
Exit Sub
Else 'SE RESPOSTA FOR: SIM
RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec
Me.Requery 'ATUALIZA
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
Exit Sub
End If
End If
If (Me.Dirty = False) Then
Beep
MsgBox "Registro já está Salvo...", vbCritical, "Alerta"
Exit Sub
End If
End If
End Sub
Obs: As propriedades do Formulário não têm nenhum comando nos eventos relacionados a rotina acima mencionada.
Uso Access 2003
Caros colegas, estou com mais uma bronca para resolver e conto com a ajuda de vocês, é o seguinte:
Após buscas neste Fórum, fiz algumas adaptações de alguns exemplos e dicas para as minhas necessidades, no entanto, não consegui o que pretendia que é:
- Incluir ou não um Novo Registro num Formulário Simples baseado em 1 Tabela sem Relacionamentos: A rotina verifica se alguns campos estão vazios, e em seguida verifica se o Registro é Novo, então pergunta se deseja salvar ou não; se não for um Novo Registro, verifica se houve alterações e pergunta se deseja salvar ou não essas alterações; no entanto, mesmo sendo um Novo Registro quando clico no Botão para Salvar o Registro (ver rotina no item 2 abaixo), esse Registro já está salvo, mesmo sem eu confirmar essa inclusão, visto que passa direto para a 2ª parte da rotina que pergunta se houve alterações e se deseja salvar, ou seja, como se já estivesse salvo.
A minha intenção: é quando ao clicar no Botão para Salvar ou Não o Registro, se a opção escolhida for “Não” sendo um Novo Registro, que o mesmo não seja incluido na Tabela, e sim desfeito todo o Registro que ainda se entende como Novo, o que não está ocorrendo visto que ele nem chega a executar essa pergunta, como já explicado acima.
1) Para inclusão de um Novo Registro uso um Botão com a seguinte rotina:
Private Sub NovoRegistro_Click()
DoCmd.GoToRecord , , acNewRec 'Incluir novo registro
Me!IDSetor.SetFocus
Exit_NovoRegistro_Click:
Exit Sub
Err_NovoRegistro_Click:
MsgBox Err.Description
Resume Exit_NovoRegistro_Click
End Sub
2) Para Salvar o Registro ou não, uso a rotina abaixo:
Private Sub SalvaRegistro_Click()
If IsNull(IDSetor) Or IsEmpty(IDSetor) Then
MsgBox "Falta Digitar o SETOR: Preenchimento obrigatório !!", vbInformation, "Alerta"
Cancel = True
Me.IDSetor.SetFocus
Exit Sub
ElseIf IsNull([IDEmitente]) Or IsEmpty([IDEmitente]) Then
MsgBox "Falta Digitar o NOME EMITENTE !", , "Validação de Campo"
Cancel = True
Me.IDEmitente.SetFocus
Exit Sub
ElseIf IsNull(NomeDestinatario) Or IsEmpty(NomeDestinatario) Then
MsgBox "Falta Digitar o NOME DO DESTINATÁRIO !", , "Validação de Campo"
Cancel = True
Me.NomeDestinatario.SetFocus
Exit Sub
ElseIf IsNull(Referencia) Or IsEmpty(Referencia) Then
MsgBox "Falta Digitar Texto em REFERÊNCIA!", , "Validação de Campo"
Cancel = True
Me.Referencia.SetFocus
Exit Sub
Else
If NewRecord Then 'VERIFICA SE O REGISTRO É NOVO
If MsgBox("Salvar o NOVO REGISTRO ?", vbYesNo, "Manutenção") = vbNo Then 'Questiona o salvamento para SIM OU NÃO
Me.Undo 'SE NÃO, CANCELA E DIZ QUE CANCELOU
MsgBox "Operação CANCELADA pelo Usuário", vbInformation
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
Exit Sub
Else 'SE SIM, SALVA O REGISTRO E DIZ QUE SALVOU
DoCmd.RunCommand acCmdSaveRecord
MsgBox "O NOVO REGISTRO foi Salvo com Sucesso !!", vbInformation
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
Exit Sub
End If
End If
Dim x As Integer
If (Me.Dirty = True) Then
Beep
x = MsgBox("Houve Alterações no Registro Atual, confirma Operação ?", vbYesNo, "Manutenção")
If x = vbNo Then 'SE RESPOSTA FOR: NÃO
Me.Undo
Me.Requery
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
DoCmd.GoToControl "NovoRegistro" 'VAI PARA O CONTROLE: 'NovoRegistro'
Exit Sub
Else 'SE RESPOSTA FOR: SIM
RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec
Me.Requery 'ATUALIZA
DoCmd.GoToRecord , , acLast 'VAI PARA ÚLTIMO REGISTRO
Exit Sub
End If
End If
If (Me.Dirty = False) Then
Beep
MsgBox "Registro já está Salvo...", vbCritical, "Alerta"
Exit Sub
End If
End If
End Sub
Obs: As propriedades do Formulário não têm nenhum comando nos eventos relacionados a rotina acima mencionada.