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


2 participantes

    [Resolvido]Manter na memória o ultimo registro acessado

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 22/10/2011, 06:20

    Saudações aos membros do fórum.

    Num banco de dados tenho diversos formulários simples. Em todos eles tenho um campo "forma". No evento ao sair do campo "forma"', caso ele seja nulo, abre um formulário continuo "cond", onde êh selecionado um registro que êh transportados para o campo "forma" do formulário em uso.

    Preciso que, sempre que acessar qualquer um destes formulários simples e ao sair do campo "forma", abra o formulário continuo "cond" e o foco va para o ultimo registro acessado pelo formulário anterior. Êh possível ?

    Obrigado a todos.

    Luiz Gustavo
    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 22/10/2011, 11:42

    Esse formulário anterior é fechado antes da abertura do outro formulário aonde você clicar para abrir o contínuo? Uma ideia interessante pode ser você criar uma função em um módulo global mais ou menos assim:

    Public Function UltReg() As Integer

    End Function


    "Ao fechar" o formulário ou "Ao clicar" em um campo ou "Ao sair" do campo ou whatsoever você coloca

    UltReg = Me.Código ' Chave primária do registro

    "Ao clicar" no botão que abre o contínuo ou "Ao abrir" o contínuo, algo como:

    DoCmd.OpenForm "NomeDoContínuo"
    DoCmd.GoToRecord , , acGoTo, UltReg


    ou, dependendo de onde você chamou a função, algo assim:

    DoCmd.OpenForm "NomeDoContínuo"
    DoCmd.GoToRecord acDataForm, NomeDoContínuo, acGoTo, UltReg


    ou ainda, caso chame a função "Ao carregar" ou "Ao abrir" o contínuo, algo assim:

    DoCmd.GoToRecord acActiveDataObject, , acGoTo, UltReg

    OBS.: Se, ao abrir o contínuo, você precisar passar outro código de registro como parâmetro para a função UltReg, você deverá chamar a função no botão que clicar para abrir o contínuo, mas precisará mudar o código da função "depois de abrir" o contínuo:

    DoCmd.OpenForm "NomeDoContínuo"
    DoCmd.GoToRecord acDataForm, NomeDoContínuo, acGoTo, UltReg
    UltReg = Me.Código


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

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 23/10/2011, 16:34

    Ola Criquio
    Como de costume, sua solução deve estar correta. Mas não estou conseguindo aplica-la. Está dando em erro de compilação: "Chamada a função do lado esquerdo de uma atribuição precisa retornar Variant ou Object". Vou tentar explicar melhor:

    Tenho 2 Forms simples (Não vinvulados a tabelas): "Pagar" e "Receber". Os 2 Forms são compostos pelos campos "Forma" e "Valor". Estão assim:

    Private Sub Valor_Enter()
    If IsNull(Me.Forma) Or Me.Forma.Value = "" Then
    Forma.SetFocus
    DoCmd.OpenForm "Operação"
    End If
    End Sub

    O forms continuo "Operação" (vinculado a tabela "tbOperação) tem 2 campos: "ID" e "Nome".

    Ao clicar no campo "ID" preciso:

    1- Que este registro seja transpostado para o campo "forma" do formulário em uso ("Pagar" ou "Receber")
    2- Que sempre que o forms "Operação" seja aberto o foco seja direcionado para o último registro acessado
    3- Que o forms "Operação" seja fechado.

    Peço desculpas pela demora em dar retorno. É que desde ontem estou tentando aplicar suas soluções sem obter êxito. Me falta conhecimento.

    Muito obrigado por seu tempo e atenção

    Abraços

    Luiz Gustavo
    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 23/10/2011, 16:46

    Tente mudar a declaração da função assim:

    Public Function Registro(UltReg As Integer)

    O resto deixa como está e teste.


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

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 23/10/2011, 17:42

    Ola Criquio

    Ainda não deu certo!
    Para testar estou trabalhando só com o forms continuo e está assim:

    Public Function Registro(UltReg As Integer)
    End Function

    Private Sub Form_Close()
    UltReg = Me.ID
    End Sub

    Private Sub Form_Open(Cancel As Integer)
    DoCmd.GoToRecord acActiveDataObject, , acGoTo, UltReg
    End Sub
    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 24/10/2011, 01:05

    Você pode fazer algo simpes: deixar um campo oculto em cada form, já que são poucos, e ao clicar em um registro ou ao sair do formulário, colocar Me.NomeDoCampo = Me.Código. Ao fechar um formulário para abrir o outro, algo assim:

    DoCmd.OpenForm "NomeDoForm"
    Form!NomeDoForm!NomeDoCampo = Me.NomeDoCampo
    DoCmd.Close acForm, Me.Name

    Agora pode passar o valor desse campo oculto no acGoToRecord


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

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 24/10/2011, 03:29

    Olá Criquio.
    Agradeço muito sua atenção, mas não estou conseguindo. É complexo de mais para meu nível de conhecimento.

    A idéia é que diversos formulários simples possam importar dados (Registro) de um único formulario continuo. E que toda vez que o formulário continuo for aberto, o foco va para o último registro acessado.

    Fiz um pequeno BD espeficifo para trabalhar com esta questão e estou anexando.
    É necessário que funcine os formulários "Pagar" e "Receber".

    Se puder dar uma olhada eu agradeço.

    Se não puder, agradeço da mesma forma. Só peço que me um retorno para que eu possa encerrar o tópico e partir para outra.

    Forte abraço
    Muito Obrigado

    Anexos
    [Resolvido]Manter na memória o ultimo registro acessado AttachmentUR.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (38 Kb) Baixado 11 vez(es)
    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 24/10/2011, 11:37

    Me fale mais sobre isso tendo como base esse exemplo que você anexou.Ele tem um formulário contínuo e dois simples, mas os dois simples não tem nada do contínuo. Eu não entendi aqui o que você quer dizer com abrir o contínuo no último registro acessado se os forms simples nem está vinculado à tabela. O campo valor estaria se referindo à chave primária da tbOperação?


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

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 24/10/2011, 15:45

    Boa tarde Amigão.

    Nos 2 forms Simples, ao entrar no campo "valor" é verificado se o campo "forma" é nulo ou "", caso sim, é aberto o formulário continuo "Operação". Os forms Simples realmente não estão vinculados a tabelas, somente o continuo está. Ao clicar em um dos campos do forms continuo o valor é transportado para o campo "forma" do formulário simples (Ou do forms "Pagar' ou do "Receber").

    Estou postando novamente o DB pois ele estava imcompleto.
    Obs. O BD anexo é um BD de teste. No DB Original, são 35 forms Simples que usam esta função.

    Preciso que sempre que o forms continuo "Operação" for aberto, o foco va para o último registro acessado. Exemplo. Acesso o forms "Pagar", no forms "Operação" seleciono o Registro 3, fecho o Forms "Pagar". Quando abrir outro forms, neste DB o forms "Receber", e ao abrir o forms "Operação", preciso que o cursor (foco) va para o registro 3.

    Mais uma vez, muito obrigado pela atenção que vem dando.
    Espero um dia poder retrubir a gentilaza.

    Abraços

    Luiz Gustavo
    Anexos
    [Resolvido]Manter na memória o ultimo registro acessado AttachmentUR.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (39 Kb) Baixado 4 vez(es)
    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 24/10/2011, 17:44

    Talvez a causa esteja nessa parte:

    If (Me.C) = "P" Then
    Forms!Pagar.Form.Forma = Me.Nome ' está definindo o campo de um form fechado...
    DoCmd.Close ' ... e fechando o form atual...
    DoCmd.OpenForm "Pagar"
    ' ... antes de abrir o outro form
    Else

    Forms!Receber.Form.Forma = Me.Nome
    DoCmd.Close
    DoCmd.OpenForm "Receber"

    End If


    Tente mudar para algo assim:

    If (Me.C) = "P" Then ' Primeiro avalio a primeira condição,
    DoCmd.OpenForm "Pagar" ' Se satisfeita, abro o segundo form...
    Forms!Pagar.Form.Forma = Me.Nome ' ... e transfiro o valor para ele.
    Else ' Se não satisfeita, passa para a próxima condição,
    DoCmd.OpenForm "Receber" ' abre o outro form...
    Forms!Receber.Form.Forma = Me.Nome ' ... e transfere o valor
    End If ' Fecho o ciclo de condições

    DoCmd.Close acForm, Me.Name
    ' Só depois de fechado o ciclo de condições,
    ' é que eu fecho o form atual.

    Da forma como estava antes, você estava fechando o contínuo antes de abrir o outro formulário, por isso o contínuo não conseguia encontrá-lo. Outra dica, para não repetir o mesmo comando para todos os campos, seria você colocar um botão coma mesma altura dos campos e na largura total dos campos, ou seja, o botão cobriria todos os campos, e colocar a instrução no clique desse botão. Para ele ficar invisível, basta definir a propriedade "Estilo do fundo" como Transparente e a propriedade "Transparente" como Sim.


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

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 24/10/2011, 19:27

    Ola Amigo
    Qto ao Botão transparente é uma solução fantástica. Você já havia me passado em outra oportunidade, e eu estou aplicando-a em todo meu DB. É muito boa.

    Qtdo ao BD em questão (o 2.o anexo que postei) está funcionando corretamente. É isto mesmo que preciso: Importar do continuo um registro para o campo texto de um formulário simples, e após a importação o formulário continuo deve ser fechado.

    O problema original persiste: Como deixar na memória do formulário continuo o último registro acessado, para toda vez que ele for aberto o foco ir para o último registro acessado?

    Para facilitar, vamos imaginar um BD com um único fomulário continuo "Operação" com 2 campos ("Cod" e "Nome") vinculado a uma tabela "tbOperação". Abro o formulário, navego por ele e paro do registro 3. Fecho o formulário. Abro-o novamente e quero que o cursor fique sobre o último registro acessado, ou seja, o registro 3. É mais ou menos isto.

    Continuarei tentando. Se puder continuar contanto com seu auxilio, com certeza ficará mais facil.

    Abraços
    Obrigado

    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 24/10/2011, 19:47

    Por que fechar esse formulário contínuo? Você poderia torná-lo oculto ao invés de fechar. Ao invés de DoCmd.Close acForm, Me.Name, poderia colocar Me.Visible = False. Nos formulários, na hora de abri-lo, colocaria Forms!NomeDoForm.Visible = True. Poderia ter aquele campo oculto para quando você clicar em uma linha, colocar Me.NomeDoOculto = Me.Código. O oculto ficaria no cabeçalho do contínuo. E nos botões que torna-o visível novamente, colocaria assim:

    Forms!NomeDoContínuo.Visible = True
    Forms!NomeDoContínuo.SetFocus
    Forms!NomeDoContínuo!NomeDoControleSubForm.SetFocus
    DoCmd.GoToRecord , "Forms!NomeDoContínuo!NomeDoControleSubForm", acGoTo, Forms!NomeDoContínuo!NomeDoOculto


    Se isso funcionar, você pode ainda criar uma função em um módulo para colocar esse código e nos botões, chamar essa função.


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

    Luiz Gustavo M
    Luiz Gustavo M
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 447
    Registrado : 13/09/2011

    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Luiz Gustavo M 24/10/2011, 23:12

    Ola
    Criquio

    Mais uma vez, com seu brilhante auxilio, tive solução para o problema.

    Não sei se é correto fazer isto, mas estou postando novamento o DB, agora com a solução, pois talvez possa ajudar a outros membros.

    Muito Obrigado Amigo Cruquio pelo seu empenho e dedicação.

    Abraços

    Luiz Gustavo
    Anexos
    [Resolvido]Manter na memória o ultimo registro acessado AttachmentUR.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (39 Kb) Baixado 32 vez(es)
    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]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  criquio 24/10/2011, 23:55

    Grato pelo retorno. Sucesso.


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


    Conteúdo patrocinado


    [Resolvido]Manter na memória o ultimo registro acessado Empty Re: [Resolvido]Manter na memória o ultimo registro acessado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 05:58