MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido] Verificar se um determinado registo está aberto ou a ser editado.

    Compartilhe
    avatar
    brunogor
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 188
    Registrado : 24/02/2013

    [Resolvido] Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  brunogor em 4/5/2018, 21:13

    Olá a todos,
    Esta semana já vou no 3º Post, vamos lá ver se fico por aqui.
    Pretendia que um utilizador ao editar o Registo X, este registo não pudesse ser editado por mais ninguém.
    No entanto pretendia que os restantes registos estivessem disponíveis para edição.
    Já experimentei a protecção de registos "me.RecordLocks=2", mas não faz o que pretendo, pois bloqueia todos os registos da Tabela.

    Conhecem alguma função para verificar se um determinado registro estar em uso.

    Obrigado pela vossa disponibilidade.

    Bruno Gordino
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido] Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  FabioPaes em 6/5/2018, 14:27

    A melhor forma de fazer isso que conheço é criar um campo na tabela para inserir o ID do usuário.
    De forma que: Ao editar o registro vc coloca o ID do usuário nesse campo e salva! Quando outra pessoa tentar editar o registro, vc verifica se o campo esta nulo ou se o ID é o do usuário logado! assim poderá permitir que apenas seja editado pelo mesmo usuário que começou a editar esse registro. E se ninguém editou ainda, estará disponível para todos!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    brunogor
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 188
    Registrado : 24/02/2013

    Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  brunogor em 6/5/2018, 16:46

    Boa tarde Fábio,
    Parece-me que é a 1ª vez que trocamos uma dúvida por um conhecimento, muito prazer.
    Como estão as coisas desse lado do Oceano?

    Através da ADO Recordset  ".State" property, consigo verificar se o seu valor é adStateClosed ou adStateOpen:
    Código:
    If Not (rs Is Nothing) Then
      If (rs.State And adStateOpen) = adStateOpen Then rs.Close
      Set rs = Nothing
    End If

    Original: [Você precisa estar registrado e conectado para ver este link.]

    O problema é que se eu estou no registo, não vou conseguir ver se ele está aberto para além de mim e vai dar sempre como aberto.

    Então a única solução é editar na Tabela o valor de um Campo via Recordset.

    Vou deixar o Post aberto mais uns dias para ver se aparece mais alguma ideia.

    Obrigado Fábio.

    Cumprimentos

    Bruno Gordino
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido] Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  FabioPaes em 6/5/2018, 17:32

    Outro agravante é que no momento em que vc buscar os dados na tabela utilizando Recordset, o registro pode esta livre... Mas qnd ao mesmo tempo outro usuário pode pegar o mesmo registro para edição, então não saberá disso!!! Por isso a necessidade de ter esse dado no Próprio Registro!!!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    brunogor
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 188
    Registrado : 24/02/2013

    Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  brunogor em 8/5/2018, 21:46

    Boa noite Fábio,
    Tenho estado a estudar um exemplo conforme passou mas tem um problema.

    Obriga-nos sempre a gravar o dado na tabela via "RecordSet" quando se edita directamente no próprio Form dá sempre estes erro :
    Erro 7787: Erro de conflito de escrita inesperado ocorre quando se fecha um formulário no Access.

    Se forçarmos o save c/ "DoCmd.RunCommand acCmdSaveRecord" vai surgir outro erro:
    Erro 2115: The macro or function set to the BeforeUpdate or ValidationRule property for this field is preventing Microsoft Access from saving the data in the field.

    Não existirá maneira mais Simples de verificar de o registo está a ser editado?

    Cumprimentos

    Bruno Gordino
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido] Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  FabioPaes em 9/5/2018, 14:19

    Bom, tentou mandar o comando via Codigo SQL?

    Currentdb.Execute "UPDATE tabelaxxx SET CAMPOAAA = " &  IDUSUARIO & ""


    No Formulário exite algumas proteções, mas não são muito amigáveis ao usuário final... Va na Guia Dados>Proteção de Registros: Registro Editado.

    Faça um Teste... Mas a Mensagem que emite e fixa e nada Profissional!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    brunogor
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 188
    Registrado : 24/02/2013

    Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  brunogor em 9/5/2018, 15:07

    Olá Fábio, nem me passou pela cabeça via SQL,
    Foi assim:
    Código:
     CurrentDb.OpenRecordset("Tbl_XXX", dbOpenDynaset)
    Vou experimentar via SQL e já dou o "FeedBack"
    Cumprimentos

    Bruno Gordino
    avatar
    brunogor
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 188
    Registrado : 24/02/2013

    Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  brunogor em 10/5/2018, 15:54

    Olá Fábio,
    Via SQL já deu. Fábio vou dar o POST como resolvido.
    Muito obrigado pela atenção que me dispensou.
    Até uma próxima e tudo de bom para si.
    Cumprimentos

    Bruno Gordino
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido] Verificar se um determinado registo está aberto ou a ser editado.

    Mensagem  FabioPaes em 11/5/2018, 15:00

    Grato pelo retorno amigo! Até a próxima se Deus quiser!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

      Data/hora atual: 18/11/2018, 19:11