Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Einstein

Habilitar botoes

Recommended Posts

Ola pessoal,

 

Preciso de mais uma ajuda de botoes:

 

 

tenho os botoes: adionar registro e gravar

 

gostaria de saber como faço para que qdo abrir o formulario, habilite apenas o botao adicionar e qdo eu clicar em adicionar , automaticamente, habilite o botao Gravar e desabilite o botao adionar registro. E logo após eu clicar em gravar, ele grave as informaçoes e volta para o estado inicial , ou seja, botao adicionar:true e botao gravar (false).

 

fiz no eventos

 

 

--Form_Open(Cancel As Integer)

novo.enable = true

gravar.enable= false

 

 

 

--novo_click()

novo.enable = false

gravar.enable= true

 

--gravar_click()

novo.enable=true

gravar.enalbe=false

 

 

nessa situaçao ele está dando erro : Voce nao pode desativar um controle enquanto ele tiver foco.

Alguem pode dar um suporte?

 

 

Grato

 

Edson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Edson,

 

Tenta isto...

 

 

 

Private Sub cmdAdicionar_Click()

 

If MsgBox("Deseja adicionar um novo registro?", vbQuestion + vbYesNo, "Sistema") = vbYes Then

 

DoCmd.GoToRecord , , acNewRec

'Nome do primeiro campo do form

'IdChamada.SetFocus

cmdGravar.Enabled = True

cmdGravar.SetFocus

cmdAdicionar.Enabled = False

 

End If

 

End Sub

Private Sub cmdGravar_Click()

 

If MsgBox("Deseja salvar as informações acima?", vbQuestion + vbYesNo, "Sistema") = vbYes Then

 

DoCmd.RunCommand acCmdRefreshPage

cmdAdicionar.Enabled = True

cmdAdicionar.SetFocus

cmdGravar.Enabled = False

DoCmd.ApplyFilter , "int([idChamada])= null"

 

End If

 

End Sub

Private Sub Form_Load()

 

'Filtro em campo numérico

DoCmd.ApplyFilter , "int([idChamada])= null"

cmdGravar.Enabled = False

cmdAdicionar.Enabled = True

 

End Sub

 

 

 

 

 

 

 

PS: recomendo que seja feita uma validação no preenchimento dos campos antes de gravar as informações...

 

 

 

Sem mais,

 

Julien Sorel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Edson,

 

Tenta isto...

 

 

 

Private Sub cmdAdicionar_Click()

 

If MsgBox("Deseja adicionar um novo registro?", vbQuestion + vbYesNo, "Sistema") = vbYes Then

 

DoCmd.GoToRecord , , acNewRec

'Nome do primeiro campo do form

'IdChamada.SetFocus

cmdGravar.Enabled = True

cmdGravar.SetFocus

cmdAdicionar.Enabled = False

 

End If

 

End Sub

Private Sub cmdGravar_Click()

 

If MsgBox("Deseja salvar as informações acima?", vbQuestion + vbYesNo, "Sistema") = vbYes Then

 

DoCmd.RunCommand acCmdRefreshPage

cmdAdicionar.Enabled = True

cmdAdicionar.SetFocus

cmdGravar.Enabled = False

DoCmd.ApplyFilter , "int([idChamada])= null"

 

End If

 

End Sub

Private Sub Form_Load()

 

'Filtro em campo numérico

DoCmd.ApplyFilter , "int([idChamada])= null"

cmdGravar.Enabled = False

cmdAdicionar.Enabled = True

 

End Sub

 

 

 

 

 

 

 

PS: recomendo que seja feita uma validação no preenchimento dos campos antes de gravar as informações...

 

 

 

Sem mais,

 

Julien Sorel

 

 

 

Só que estou encontrando um problema, abriu certinho, mas se o usuario nao clicar no adicionar e sim em qualquer campo (nome, data nascimento ) e digita, ele gera o codigo (ex: 12), e qdo ele clica no adicionar , ele digita os campos , ele gera o codigo posterior (ex: 13). Como faço para que qdo abrir esse formulario, esteja apenas habilitados dos botes e force o usuario a clicar no botao adicionar, impedindo-o de fazer esquecer de apertar o botao e digitar direto.

 

Grato

Edson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Edson,

 

Você tem algumas opções - umas mais complicadas, outras nem tanto:

 

Acho que o mais fácil e bloquear todos os campos e os liberar apenas quando o campo anterior for preenchido - ou algo parecido.

 

 

 

Private Sub cmdAdicionar_Click()

 

If MsgBox("Deseja adicionar um novo registro?", vbQuestion + vbYesNo, "Sistema") = vbYes Then

 

DoCmd.GoToRecord , , acNewRec

 

lstOperador.Enabled = True

lstMidia.Enabled = True

lstStatus.Enabled = True

lstOperador.SetFocus

 

cmdGravar.Enabled = True

cmdGravar.SetFocus

cmdAdicionar.Enabled = False

 

End If

 

End Sub

 

 

PS: imagino que existe um campo autonumerado que funcione como Código de alguma coisa - usuários sempre erram e a sequencia numérica sempre será interrompida; recomendo utilizar o código abaixo ao invés de autonumeração - caso usuário cancele o cadastro, não se perde a sequencia.

 

Private Sub cmdAdicionar_Click()

On Error GoTo Err_Adicionar

 

If MsgBox("Deseja adicionar um novo registro?", vbQuestion + vbYesNo, "Sistema") = vbYes Then

 

DoCmd.GoToRecord , , acNewRec

 

'Verifica na table "Chamadas" o maior número do campo "IdChamada" e acrescenta + 1

IdChamada = DMax("IdChamada", "tblChamadas") + 1

 

lstOperador.Enabled = True

lstMidia.Enabled = True

lstStatus.Enabled = True

lstOperador.SetFocus

 

cmdGravar.Enabled = True

cmdGravar.SetFocus

cmdAdicionar.Enabled = False

 

End If

 

Exit_Adicionar:

Exit Sub

 

 

Err_Adicionar:

 

MsgBox "Erro número: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Sistema"

 

Resume Exit_Adicionar

 

End Sub

 

 

 

 

Sem mais,

 

Julien Sorel

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.