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]obj.Close ou SET obj = Nothing?

    DaviSilva
    DaviSilva
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 26/09/2013

    [Resolvido]obj.Close ou SET obj = Nothing? Empty [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  DaviSilva Sex 18 Ago 2017, 6:20 pm

    Boa tarde.

    A um bom tempo estou trabalhando em access 2000 e até mesmo no 2013 com Record source.

    Na verdade faço o seguinte:

    Dim sql as string
    Dim obj as Object

    sql = SELECT * FROM produto
    SET obj = CurrentDb.OpenRecordSource(sql)

    Ai manipulo os registros e tal.
    Mas sempre finalizo o objeto usando: Obj.Close

    Já vi em alguns códigos que outras pessoas fazem usando: SET obj = Nothing

    Minha duvida é a seguinte.

    Posso usar apenas o close?
    ou apenas o Nothing?
    Qual a diferença entre eles?

    Poderia talvez usar os dois juntos da seguinte maneira?

    obj.close
    SET obj = Nothing

    Dessa ultima maneira ja testei e tudo continua funcionando corretamente, mas minhas duvidas sao mesmo de conceitos.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]obj.Close ou SET obj = Nothing? Empty Re: [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  Alexandre Neves Sáb 19 Ago 2017, 5:37 pm

    Boa tarde,
    close - fecha
    nothing - atribui a inexistência da variável do objecto
    Se o recordset é aberto numa subrotina, a variável do recordset tem âmbito local e desaparece no final da rotina, independentemente de fechar ou eliminar
    Se o âmbito fôr além da subrotina, difere na memória alocada; se fechar, fica com o recordset fechado mas a utilizar memória enquanto se eliminar da memória fca com essa memória disponível para outros processos ou variáveis


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    DaviSilva
    DaviSilva
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 26/09/2013

    [Resolvido]obj.Close ou SET obj = Nothing? Empty Re: [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  DaviSilva Seg 04 Set 2017, 2:00 pm

    Alexandre Neves , muito obrigado pela explicação.

    Agora uma outra duvida envolvendo o RecordSet:

    Tenho um formulario Principal e um Sub acoplado a ele.

    Antes fazia alterações no Principal usando o modulo do Sub com a função [Parent], por exemplo ME.Parent!Data = Date(). Até ai tudo bem,
    depois de um tempo comecei a usar cada vez mais os recordsets, por achar mais facil de filtrar e manipular os registros. Agora eis o problema.

    Criei um RecordSet no SubForm que altera os dados da tabela principal do form Principal. Mas quando mudo o foco do mouse do sub para o principal, aparece aquela mensagem dizendo que outro usuário estava alterando ao mesmo tempo que eu. Mas tenho certeza que não é esse o caso. Pois quando retorno a rotina para usar a função [Parent], ele não mostra mais a menssagem.

    Pergunta -> Tem como evitar que isso aconteça? Pois prefiro usar o recordset do que o parent.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]obj.Close ou SET obj = Nothing? Empty Re: [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  Alexandre Neves Seg 04 Set 2017, 3:05 pm

    Boa tarde,
    Também me surgiu e acho dificil de resolver
    Ao tempo que foi, não me lembro como ultrapassei, ou se desisti desse caminho


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]obj.Close ou SET obj = Nothing? Empty Re: [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  FabioPaes Seg 04 Set 2017, 6:58 pm

    Não sei se é bem o que passei por aqui...
    Mas resolvi da seguinte forma:

    Antes de abrir o recordset que editará o registro, rode um comando para salvar o Registro do Formulário principal:

    DoCmd.RunCommand acCmdSaveRecord

    Agora pode abrir o recorset e editar.... Quando voltar para o Principal, pode rodar um .Requery para buscar novamente os dados...



    Aqui eu resolvi dessa forma. Estava no Formulário Principal, e abria um formulário extra no mesmo registro, para editar alguns campos que eram restritor a certas ocasiões.... e sempre que eu retornava para o Registro que ja estava aberto no formulário principal, ele reclamava da gravação... Então antes de abrir o Segundo formulário eu salvava o Registro Principal. Assim ao voltar ao primeiro formulário nao tinha nada pra salvar e não dava conflito.


    .................................................................................
    _____________________________________________________________________
    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!
    DaviSilva
    DaviSilva
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 26/09/2013

    [Resolvido]obj.Close ou SET obj = Nothing? Empty Re: [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  DaviSilva Ter 27 Fev 2018, 3:13 pm

    Muito obrigado a todos.

    Conteúdo patrocinado


    [Resolvido]obj.Close ou SET obj = Nothing? Empty Re: [Resolvido]obj.Close ou SET obj = Nothing?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Sex 19 Abr 2024, 1:44 pm