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

    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"
      
    avatar
    ronaldojr1
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 195
    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.
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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: Ter 27 Jun 2017, 18:16