MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Fechar Formulário com a Tecla Escape

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  Assis 12/7/2010, 16:07

    Com o seguinte comando fecho um formulário ao premir a tecla escape :

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyEscape Then
    If MsgBox("Sair do Registo de Vendas ? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then
    DoCmd.Close
    Else
    DoCmd.CancelEvent
    Exit Sub
    End If
    End Sub

    O Formulário (Encomendas), aonde digito o nome do Cliente e a Data tem um subformulário (Detalhes Artigos),continuo ligado aonde registo os artigos a registar para o respectivo Cliente.
    Depois de tudo preenchido tem um Botão de Comando para gravar, e grava sem problemas.

    Como fechar o respectivo Formulário com a tecla escape e NÂO GRAVAR NADA MESMO TENDO TODOS OS CAMPOS PREENCHIDOS no formulário e no subformulário ?

    Access 2003

    Obrigado
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 16:20

    Olá

    Configurar no form keypreview true.


    Private Sub seubotão_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles seubotão.Click
    Me.Close()
    End Sub

    Private Sub seuform_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    If e.KeyCode = Keys.Escape Then
    Button1_Click(sender, e)

    End If
    End Sub
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 16:31

    Assis

    Eu uso esse código no VB6, mas não sei se o access vai aceitar. adaptei-o porque ele é mais extenso e permite fechar uma child aberta. Se aceitar tudo bem, caso contrário
    experimente assim

    No evento ao premir a tecla

    Select Case KeyCode
    Case vbKeyEscape
    DoCmd.Close
    End Select
    End Sub
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  Assis 12/7/2010, 17:12

    Olá Vieirasoft
    Desde já obrigado pela atenção, o seu comando (Select Case KeyCode) também fecha os formulários.
    Mas o meu problema não é fechar só formulário. O problema é fechar o formulário e também não gravar nada que esteja que esteja digitado, tanto no formulário, como no subformulário.
    Obrigado.
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 17:21

    Assis

    Já experimentou com Dirty no evento fechar?
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  Assis 12/7/2010, 17:31

    O meu formulário é de introdução de dados = Sim
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 17:37

    Bom se o utizador inseriu dados e depois clica sem os gravar porque não efectuar Undo?
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  Assis 12/7/2010, 18:05

    O Undo não elimina os dados do subformulário
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 18:14

    Pois é não reparei que a somar a isso tudo ainda existe um subformulário. Gostaria de o poder ajudar mais, vamos ver se mais alguém tem alguma outra sugestão, embora não esteja a ver. Mas quem sabe!
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  criquio 12/7/2010, 18:45

    Por isso eu gosto de usar forms desacoplados, para que somente sejam gravados os dados após confirmação, via Recordset.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 18:50

    Sem dúvida a melhor solução, mas e o subform? O Moderador reparou que temos aqui um subform que está ligado ao form principal. ou é possível fazer isso para os dois?
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  criquio 12/7/2010, 19:21

    Quando preciso de um subform, eu costumo ligar apenas os campos identificadores, como a chave primária de um com a estranjeira do outro, isso em um subform desacoplado, e o salvamento através de Recordset normal. Eu faço esse vínculo usando Forms!MeuSubForm!ChavePrimária = Me.ChaveEstranjeira no evento que sai do form para o suboform ou Me.ChaveEstranjeira = Forms!MeuForm!ChavePrimária em um evento dentro do subform, como "Ao receber foco" de um controle inicial.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 12/7/2010, 19:46

    O que o Moderador diz tem toda a lógica, mas eu estava testando aqui com uma base de dados que fiz à pressa e ainda não consegui porque não estava a saber ligar os campos entre o subform e o form estando ambos Unbound. Vou testar e retorno.
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 13/7/2010, 10:56

    Amigo Criquio

    Tentei assim

    Private Sub Form_Open(Cancel As Integer)
    Dim rst As New ADODB.Recordset


    rst.CursorLocation = adUseClient
    rst.ActiveConnection = CurrentProject.Connection
    rst.LockType = adLockBatchOptimistic
    rst.CursorType = adOpenKeyset
    rst.Source = "clientes"
    rst.Open
    rst.ActiveConnection = Nothing
    Set Me.Recordset = rst
    Set cl.ActiveRecordset = rst
    cl.ID = "IDCliente"
    cl.Unique_Table = "clientes"

    End Sub

    Private Sub cmdGravar_Click()
    On Error Resume Next

    If Me.Dirty Then
    Me.Refresh
    End If

    If cl.Dirty = True Then
    cl.Actualizar CurrentProject.Connection
    MsgBox "Registos efectuados : " & cl.RecordsAffected & " com sucesso"
    MsgBox "Foram encontrados os seguintes erros : " & vbCrLf & cl.Erros
    End If

    End Sub

    agora no subformulário tenho esses campos e não consigo estabelecer o vínculo

    IDCliente
    DescriçãoPedido

    Será que pode dar um exemplo a partir destaligação do IDcliente ao form principal? Assim talvez o Moderador Assis pudesse experimentar se por este método funcionaria a Tecla escape e os dados não seriam gravados. Penso que muitos membros estão de olho neste tópico.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  criquio 13/7/2010, 11:56

    Olha só, eu tenho uma aplicação que fiz para uma procuradora da justiça do TRT aqui da minha cidade. Essa aplicação se destina ao cadastro de de bens penhorados pela justiça. Cada bem tem descrições distintas, tais como:

    + automóveis: placa, ano, chassi, modelo, Renavan,etc
    + computadores: placa mãe, estabilizador, memória, cpu, etc
    + imóveis: endereço, número no Incra, área total, área construída, etc
    + bens diversos: bem, características, observações
    + maquinários pesados: ano, modelo, número, etc


    Pelo fato de terem características distintas, eu criei uma tabela para cada tipo de bem acima descritos, num total de 5 tabelas para os bens. Então coloquei no form principal, os subforms de cada um deles invisível, e, no botão que grava os dados da pessoa que teve os bens penhorados, coloquei uma instrução que faz com que os botões que abrem tais formulários só fiquem visíveis após a gravação dos dados do form principal. Ao clicar no botão que torna visível o subform de inserção de automóveis, abre-se o subform em questão, o id do penhorado é escrito na chave estranjeira desse subform e o foco enviado para o primeiro campo de inserção de dados desse subform:

    Private btnAutos_Click()

    Me.subAutos.Visible = True
    Me.subBensDiversos.Visible = False
    Me.subImóveis.Visible = False
    Me.subComputadores.Visible = False
    Me.subMaqPesadas.Visible = False

    Forms!subAutos!IdPenhorado = Me.IdPenhorado
    Forms!subAutos!txtMarca.SetFocus

    End Sub


    E, nesse caso, cada subform tem seu próprio botão de gravação dos dados independente do form principal. Tem ainda outras características, como por exemplo, os campos do form principal ficarem inacessíveis para evitar alteração acidental de dados.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  vieirasoft 13/7/2010, 13:09

    Funcionou bem, deu trabalho e dores de cabeça com o sub, mas fico a pensar que a maioria dos utilizadores que aqui chegam não estão familiarizados com estas rutinas avançadas. Numa mdb pequena até que tudo bem com 5 campos como esta. Ainda me falta implementar a rutina para gravar os dados, embora isso seja o mal menor. Assim não grava os dados o que é lógico pois estão desvinculados. Mas parece-me que não será desta maneira que se irá resolver o problema do Moderador assis. Até porque já terá a base de dados num estado avançado e eu não sei se teria coragem para voltar atrás..A tecla Escape está aqui a complicar tudo.

    Vamos aguardar por mais sugestões!

    Conteúdo patrocinado


    [Resolvido]Fechar Formulário com a Tecla Escape Empty Re: [Resolvido]Fechar Formulário com a Tecla Escape

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 01:53