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

    Erro 2046 - FindRecord no formulário

    avatar
    Victor Vilar
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 19/08/2015

    Erro 2046 - FindRecord no formulário Empty Erro 2046 - FindRecord no formulário

    Mensagem  Victor Vilar 30/11/2016, 16:29

    Olá a todos,
    estou tentando criar um botão no meu formulário que copie as informações dos campos,crie um novo registro com as informações coletadas e logo em seguida faz com que o formulário vá para esse novo registro. Só que esta dando um erro quando utilizo o comando --"DoCmd.FindRecord "[Código] =" & intCod--, que se encontra na ultima linha. Segue o meu código:

    Código:
    Dim rs As Recordset
        Dim db As Database
        Dim contador As Integer
        Dim intCod As Integer
        Dim strInfCli(9) As String
        Set db = CurrentDb()
        Set rs = db.OpenRecordset("TblProposta", dbOpenDynaset)
      
       'colocando informações do formulário no vetor
        strInfCli(1) = cliente
        strInfCli(2) = cnpj
        strInfCli(3) = endereco
        strInfCli(4) = telefone
        strInfCli(5) = cidade
        strInfCli(6) = bairro
        strInfCli(7) = email
        strInfCli(8) = responsavel
        strInfCli(9) = cpf
        '----------------------------------
    'aqui peço para ir para o ultimo registro e coloco o valor do campo NumProposta(Numero Proposta) em uma variavel porque quero que esse campo seja auto-incrementável
        rs.MoveLast
        contador = rs![NumProposta] + 1
    '----------------------------------------
        'salvando informaçoes na tabela
        rs.AddNew
        intCod = rs![Código]'coloco o codigo em uma variavel para poder pesquisar mais tarde
        rs![NumProposta] = contador
        rs![cliente] = strInfCli(1)
        rs![cnpj] = strInfCli(2)
        rs![endereco] = strInfCli(3)
        rs![telefone] = strInfCli(4)
        rs![cidade] = strInfCli(5)
        rs![bairro] = strInfCli(6)
        rs![email] = strInfCli(7)
        rs![responsavel] = strInfCli(8)
        rs![cpf] = strInfCli(9)
        rs.Update
        
        Set rs = Nothing
        Set sb = Nothing
        
        Forms![FrmDeProposta]![Código].SetFocus
        DoCmd.FindRecord "[Código] =" & intCod <--- "nesta linha o código da erro 2046 informando que nao esta disponivel agora"
      
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    Erro 2046 - FindRecord no formulário Empty Re: Erro 2046 - FindRecord no formulário

    Mensagem  ronaldojr1 30/11/2016, 17:50

    caso vc estiver inserindo os dados no mesmo formulário q executa a sua rotina, tenta executar o comando para ir pro ultimo registro.
    Código:
    DoCmd.RunCommand acCmdRecordsGoToLast
    caso nao funcionar tente dar um save no formulario antes de tentar localizar
    Código:
    DoCmd.save
    caso nao der certo agente tenta outras alternativas, mas as mais simples são essas.

    boa sorte
    avatar
    Victor Vilar
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 19/08/2015

    Erro 2046 - FindRecord no formulário Empty Re: Erro 2046 - FindRecord no formulário

    Mensagem  Victor Vilar 30/11/2016, 18:25

    Tentei das duas maneiras que você disse mas não funcionou.
    O comando "DoCmd.RunCommand acCmdRecordsGoToLast" tambem nao esta disponivel.
    Na verdade qualquer comando que comece com "docmd.runcommand" não funciona.

    Acabei encontrando uma resposta do porque isso ocorre:

    O método RunCommand, executa uma ação do objeto menu, ou seja vc só vai ter acesso a ele puder executar alguma ação no evento que vc esta trabalhando, em um form ou report o menu sabe a quem esta se refindo, principalmente se os dados são acoplados, agora quando vc abre um recordset dentro de módulo ou mesmo em form através do Dao ou Ado, a barra de comandos não sabe a quem esta se referindo, não há nenhuma ligação entre a barra e seus registro, assim ela fica indisponível. Para ser sincero eu nunca usei um runCommand, nao acho usual vc criar um evento que dispara um botão(command) para disparar outro evento, é mais fácil dispararo o ultimo evento direto.
    Outra dicaa, se alguma vez vc for procurar emprego e o tiver que fazer um teste (access/vb/vba) e escrever uma funçao para atualizar uma tabela a partir de outra tabela, abrir um recordset e criar um loop para percorrer o mesmo, exceto é claro, que vc tenha alguma razão muito especifica (que eu ainda não vi), esquece, pode partir para outra vaga.

    Muito obrigado por tentar ajudar ronaldojr1, tentarei mudar o código e ver se funciona.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    Erro 2046 - FindRecord no formulário Empty Re: Erro 2046 - FindRecord no formulário

    Mensagem  Noobezinho 30/11/2016, 18:33

    Victor

    Acredito que funcione dessa maneira:


    em cada campo que deseja copiar o valor para o próximo registro e

    Na propriedade Apos Atualizar de cada um deles coloque:

    Me!NomeCampo.DefaultValue = Me!Campo

    Exemplos usando algum dos teus controles, ficarão assim:

    Private Sub cliente_BeforeUpdate()
    Me!cliente.DefaultValue = Me!cliente
    End sub


    Private Sub cnpj_BeforeUpdateUpdate()
    Me!cnpj.DefaultValue = Me!cnpj
    End sub


    Private Sub endereco_BeforeUpdateUpdate()
    Me!endereco.DefaultValue = Me!endereco
    End sub

    Na última caixa de texto que deseja que repita o valor, coloque também no
    evento ao sair dela:
    docmd.gotocontrol "NomeBotãoAdicionar"

    Bem mais simples  Wink

    [ ]'s


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.

    Conteúdo patrocinado


    Erro 2046 - FindRecord no formulário Empty Re: Erro 2046 - FindRecord no formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 14:56