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

    Função dirty em formulario desacoplado

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Função dirty em formulario desacoplado Empty Função dirty em formulario desacoplado

    Mensagem  Motar 18/1/2013, 22:47

    Viva
    Utilizo um formulario desacoplado e pretendia que se algum campo fosse alterado, ao sair do form ele pergunta-se se pretendia gravar as alterações.
    Utilizei a propriedade dirty mas não funcionou em formulario desacoplado.
    Tem como fazer isso sem ser na propriedade ao alterar em cada campo?

    Um Abraço
    Rui Sérgio
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  criquio 18/1/2013, 23:34

    Uma opção pode ser carregar os dados em uma variável ao abrir o registro e depois confrontar os dados presentes nos campos com os carregados na variável. Algo como:

    varDados = Me.NomeCampo1 & Me.Campo2 & Me.Campo3

    Depois, na hora de verificar se mudou algo:

    Código:
    If varDados <> Me.NomeCampo1 & Me.Campo2 & Me.Campo3 Then
        If MsgBox("Houve alterações nos dados. Deseja gravá-la?", vbYesNo + vbQuestion, "Dados alterados") = vbYes Then
            Gravar os dados
        End If
    End If
    A variável deve ser declarada fora dos eventos do formulário:

    Option Compare Database
    Option Explicit
    Dim varDados As String


    .................................................................................
    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.

    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  Avelino Sampaio 19/1/2013, 08:12

    Olá

    Baixe o aplicativo Meastro do meu site que tem um formulário desvinculado como exemplo. Nele eu uso a cor vermelha para definir qualquer alteração e ainda é possivel realizar o salvamento de forma altomática ao fechar o formulário. Veja mais detalhes do Maestro, neste meu artigo abaixo:

    http://www.usandoaccess.com.br/dicas/dica34.asp?id=1#inicio

    Bom estudo!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  Motar 19/1/2013, 09:25

    Muito obrigado Avelino e criquio, vou testar e depois dou feedback.
    Cumprimentos
    Rui Sérgio
    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  Motar 19/1/2013, 11:16

    Viva
    Como tenho vários formularios e alguns com mais de 30 campos fica demorado estar a colocar código no evento "ao alterar" para cada campo, estou a pensar utilizar este ccódigo:

    Dim ctl As control
    Dim VarDadosAlt As String
    For Each ctl In Controls
    If ctl.ControlType = acTextBox Then
    If ctl.Locked = False Then
    ctl.SetFocus
    If Nz(ctl.Name) = 0 Then
    VarDadosAlt = VarDadosAlt & " "
    Else
    VarDadosAlt = VarDadosAlt & ctl.Text
    End If
    End If
    End If
    Next
    If VarDadosAlt <>VarDadosOrigem Then
    MsgBox "edição"
    Else
    MsgBox "consulta"
    End If

    só que não me esta a reconhecer quando o campo está nulo e se não colocar a linha ctl.setfocus dá erro.

    O que acham desta ideia efetuada com base nos vossos exemplos?
    Um Abraço
    Rui Sérgio
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  criquio 19/1/2013, 11:25

    Tente assim:

    Código:
    ...
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Then
            If ctl.Locked = False Then
                VarDadosAlt = VarDadosAlt & ctl.Value
            End If
        End If
    Next
    ...
    Precisa ter em nota tambem se todos os textbox não bloqueados entram na condição. Caso não, precisa adaptar.


    .................................................................................
    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.

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  Motar 19/1/2013, 11:44

    Viva
    Como você disse funciona, mas pode não gravar alguns dados, como por exemplo:
    Imaginando que temos só 3 campos
    Campo1 = A
    Campo2 está em branco (nulo)
    Campo3 = B
    Nesta situação se eu alterar o campo2 para o valor B e alterar o campo3 para nulo, vai dar o resultado que não houve alterações pois o resultado é o mesmo AB
    É raro acontecer mas pode acontecer.

    Um Abraço
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  criquio 19/1/2013, 12:02

    Coloque algo como um ponto e vírgula entre os dados:

    ...
    VarDadosAlt = VarDadosAlt & ";" & ctl.Value
    ...


    .................................................................................
    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.

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  Motar 19/1/2013, 12:17

    Valeu criquio, execelente ideia Smile
    Obrigado

    Conteúdo patrocinado


    Função dirty em formulario desacoplado Empty Re: Função dirty em formulario desacoplado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 17:53