MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Erro 2046 - FindRecord no formulário

    Compartilhe

    Victor Vilar
    Novato
    Novato

    Respeito às Regras 100%

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

    Erro 2046 - FindRecord no formulário

    Mensagem  Victor Vilar em Qua 30 Nov 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
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    Re: Erro 2046 - FindRecord no formulário

    Mensagem  ronaldojr1 em Qua 30 Nov 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

    Victor Vilar
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Erro 2046 - FindRecord no formulário

    Mensagem  Victor Vilar em Qua 30 Nov 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
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Erro 2046 - FindRecord no formulário

    Mensagem  Noobezinho em Qua 30 Nov 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


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

      Data/hora atual: Qua 07 Dez 2016, 08:37