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

    [Resolvido]Erro em Requery

    Compartilhe

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    [Resolvido]Erro em Requery

    Mensagem  vileman em Dom 18 Jun 2017, 04:09

    Boa noite a todos. ** Uso Access 2003.

    A rotina abaixo até ontem estava funcionando normalmente, mas a partir de hoje começou a dar a mensagem: “O comando ou ação ‘RepetirConsulta’ não está disponível agora” e aponta para a linha “DoCmd.Requery "F102_ConsumoXPagto" após atualizar o campo ‘TipoContabil’ no evento “Após atualizar”.

    Após essa mensagem coloquei o comando ‘On Error Resume Next’. Resultado: A mensagem de erro não mais aparece, no entanto, não mostra/atualiza o registro com o comando “DoCmd.Requery "F102_ConsumoXPagto", que seria para mostrar  de forma automática a inserção de um novo registro no subformulário “F102_ConsumoXPagto”. O registro foi inserido normalmente, mas só mostra se eu clicar em algum campo do Formulário principal, visto que o subformulário em questão está em uma Guia.

    Detalhes:
    Formulário principal: F10_Consumo
    Subformulário: F102_ConsumoXPagto

    Ação da Rotina: Após atualizar o campo ‘TipoContabil para código 1 ou 5 ou 6, cria um novo registro no subformulário e deveria mostrar de forma automática a inserção desse novo registro no subformulário, o que antes acontecia, embora eu não tenha feito mais nenhuma inclusão ou alteração no formulário ou subformulário e nem na rotina em questão.
    Gostaria da ajuda dos senhores, mais uma vez, as buscas que fiz no fórum não foram suficientes para dar uma luz ou não tinham nada relacionado com a mensagem de erro acima relatada.

    Private Sub TipoContabil_AfterUpdate()
           On Error Resume Next 'TESTE: Para mensagem de erro "O Comando ou ação 'Repetir Consulta' não está disponível agora'. FUNCIONOU ? Sim, mas não está mais  mostrando o novo registro inserido de forma automática.
           DoCmd.GoToControl "F102_ConsumoXPagto"
           
           If TipoContabil = 1 Or TipoContabil = 5 Or TipoContabil = 6 Then  '1:Dinheiro / 5:Cartão de Crédito / 6: Cartão Refeição
              Me!ModoPagto = 1                                                                           '1: Pagto. Único
              Me.ValorSomatorio = ValorAPagar
              Me!ValorPago = ValorAPagar

              Dim stDocName As String
              Dim stLinkCriteria As String
              stDocName = "F102_ConsumoXPagto"                                               'Abre Formulário [DESTINO]
              stLinkCriteria = "[IDConsumo]=" & Me![TipoContabil]                           'CampoID da Autonumeração [DESTINO] + Campo de ORIGEM que chama a rotina
              DoCmd.OpenForm stDocName, , , stLinkCriteria
             
              MsgBox "ATENÇÃO!! Será feito o Lançamento automático para Pagamento!", vbInformation, "Sistema - Alerta"
              DoCmd.OpenForm "F102_ConsumoXPagto", acNormal, , , acFormAdd                   'Abre Formulário [DESTINO]
              DoCmd.GoToRecord , , acNewRec                                                                   'Inclui Novo Registro no Formulário [DESTINO]
              Forms!F102_ConsumoXPagto!IDConsumo = Forms!F10_Consumo!CodConsumo        'ORIGEM: F10_Consumo!CodConsumo X DESTINO: F102_ConsumoXPagto!IDConsumo
              Forms!F102_ConsumoXPagto!ValorPagto = Forms!F10_Consumo!ValorAPagar            'ORIGEM: F10_Consumo!ValorAPagar X DESTINO: F102_ConsumoXPagto!ValorPagto
              Forms!F102_ConsumoXPagto!DataPagto = Forms!F10_Consumo!DataConsumo         'ORIGEM: F10_Consumo!DataConsumo X DESTINO: F102_ConsumoXPagto!DataPagto
              Forms!F102_ConsumoXPagto!IDOperadora = Forms!F10_Consumo!TipoContabil       'ORIGEM: F10_Consumo!TipoContabil X DESTINO: F102_ConsumoXPagto!IDOperadora
              DoCmd.Close acForm, "F102_ConsumoXPagto", acSaveYes                                     'Fecha Formulário [DESTINO]
              DoCmd.Requery "F102_ConsumoXPagto"                                       'Atualiza SubFormulário após incluir Novo Registro
              Exit Sub
              MsgBox Err.Description
           End If
    End Sub
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro em Requery

    Mensagem  Alexandre Neves em Dom 18 Jun 2017, 16:58

    Boa tarde,
    Não entendi a mecânica mas julgo que está a tentar inserir registos (e depois fecha o formulário)
    Se for assim, porque não cria directamente os registos na tabela? (com comando currentdb.execute (INSERT INTO ...))


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

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Seg 19 Jun 2017, 15:24

    Bom dia,

    Sim, a ideia é inserir um novo registro. A rotina que fiz primeiramente foi seguindo a mesma lógica de uma rotina que você havia feito para mim em outro tópico e que funcionou perfeitamente, inclusive nessa mesma BD aqui mencionada tem um outro formulário que usa essa 1ª rotina e funciona perfeitamente, mas nesse outro formulário em questão não funciona.

    Então, seguindo sua sugestão, fiz conforme abaixo, mas nenhum registro é inserido e nem mostra nenhuma mensagem de erro.
    Deve estar faltando algo que não percebi ou algo errado. Veja abaixo como ficou:

    Tabela Origem: T10_Consumo (de onde parte os dados a serem inseridos)
    Campo: CodConsumo (Autonumeracao)

    Tabela Destino: T102_ConsumoXPagto (para onde irão os dados inseridos)
    Campo: IDConsumo (Número. Que tem vínculo um-para-vários com o campo acima)

    Private Sub TipoContabil_AfterUpdate()
    If TipoContabil = 1 Or TipoContabil = 5 Or TipoContabil = 6 Then
    Me!ModoPagto = 1
    Me.ValorSomatorio = ValorAPagar
    Me!ValorPago = ValorAPagar

    CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto ( IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario ) " & _
    "SELECT IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario FROM T10_Consumo " & _
    "WHERE CodConsumo=" & Me!CodConsumo & ";", dbFailOnError
    Me.Requery
    MsgBox "** ATENÇÃO: Lançamento feito com sucesso !", , "Sistema: Aviso de Operação"
    End sub

    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro em Requery

    Mensagem  Alexandre Neves em Seg 19 Jun 2017, 20:42

    Boa noite,
    veja por partes até descobrir que parte não funciona
    veja o resultado da consulta
    SELECT IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario FROM T10_Consumo WHERE CodConsumo=Coloque aqui todos os códigos possiveis para testar os resultados possíveis

    Nesta consulta, os campos correspondem? o tipo de dados de cada campo está certo? algum tem valor nulo? esse campo aceita valores nulos?
    tente acrescentar à mão um registo na tabela com os dados obtidos na consulta para confirmar se aceita o registo


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

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Ter 20 Jun 2017, 00:53

    Boa noite, Alexandre

    Fiz os testes recomendados, mas também não funcionou e nem apareceu nenhuma mensagem de erro.

    Na consulta os tipos de dados da origem são correspondentes aos tipos de dados do destino.
    Os campos que são inseridos no novo registro não tem nenhum que possa ficar como nulo.
    Não tive como acrescentar um registro à mão na tabela com os dados da consulta, pois nenhum dos campos funcionou.

    Abaixo segue os campos correspondentes:

    Tabela Origem
    CodConsumo = Autonumeracao
    DataPedido = Data
    ValorAPagar = Unidade monetária
    TipoContabil = Número
    Usuario = Texto
    DataUsuario = Data

    Tabela Destino
    IDConsumo = Número
    DataPagto = Data
    ValorPagto = Unidade monetária
    IDOperadora = Número
    Usuario = Texto
    DataUsuario = Data

    Mas, após suas sugestões, olhei mais atentamente e vi que tinha 2 campos que não correspondiam na tabela destino, então fiz a alteração devida, refiz os testes, mas os resultados foram os mesmos, ou seja, não insere um novo registro para mostrar online no subformulário em questão.

    Então ficou assim agora:

    Private Sub TipoContabil_AfterUpdate()
            If TipoContabil = 1 Or TipoContabil = 5 Or TipoContabil = 6 Then  '1:Dinheiro / 5:Cartão de Crédito / 6: Cartão Refeição
              Me!ModoPagto = 1                                               '1: Pagto. Único
              Me.ValorSomatorio = ValorAPagar
              Me!ValorPago = ValorAPagar

              CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto ( IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario ) " & _
                           "SELECT CodConsumo, DataPedido, ValorAPagar, TipoContabil, Usuario, DataUsuario FROM T10_Consumo " & _
                           "WHERE CodConsumo=" & Me!CodConsumo & ";", dbFailOnError 'linha original
             Me.Requery
             MsgBox "** ATENÇÃO: Lançamento feito com sucesso !", , "Sistema GESTOR: Aviso de Operação"
    End sub

    Tem alguma outra sugestão?
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro em Requery

    Mensagem  Alexandre Neves em Ter 20 Jun 2017, 22:04

    Boa noite,
    Aparentemente está tudo preparado para funcionar
    Verifique se os números dos campos correspondentes são iguais (num é número longo e noutro número inteiro? num é número inteiro e noutro é número byte?)
    Se não funcionar, tente criar registo assim
    CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto (IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario ) " & _
    "VALUES (12345,#1-1-2017#,1,2,'X', #1-1-2017#)"


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

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Qui 22 Jun 2017, 01:08

    Boa noite,

    Os campos correspondentes tipo Número são todos Inteiro Longo em ambas as tabelas.

    Usei os comandos abaixo conforme recomendado, mas nada aconteceu, nem mesmo mensagem de erro.
    CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto (IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario ) " & _
    "VALUES (12345,#1-1-2017#,1,2,'X', #1-1-2017#)"

    Fiz outro teste:
    Retirei a linha de comando:
    On Error Resume Next

    Linha que havia colocado devido ao erro: "O Comando ou ação 'RepetirConsulta' não está disponível agora", citado na mensagem nº 1
    Após isso aparece a seguinte mensagem: "Erro em tempo de execução '3061'. Parâmetros insuficientes. Eram esperados 1."
    Ao depurar aponta em amarelo para as linhas:

              CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto (IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario) " & _
                           "SELECT CodConsumo, DataPedido, ValorAPagar, TipoContabil, Usuario, DataUsuario FROM T10_Consumo " & _
                           "WHERE CodConsumo=" & Me!CodConsumo & ";", dbFailOnError
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro em Requery

    Mensagem  Alexandre Neves em Qui 22 Jun 2017, 21:52

    Boa noite,

    reveja o nome dos campos envolvidos na consulta
    Em T102_ConsumoXPagto, reveja os campos IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario
    Em T10_Consumo, reveja CodConsumo, DataPedido, ValorAPagar, TipoContabil, Usuario, DataUsuario, CodConsumo
    os nomes estão certos?
    Senão, vá à consulta manual e insira todos os dados que a consulta deveria devolver


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

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Dom 25 Jun 2017, 01:54

    Boa noite,

    Sim, os nomes estão corretos, tanto que fiz nova revisão em ambas tabelas nos campos envolvidos, e estão todos corretos em termos de serem do mesmo tipo correspondentes.
    Mas, a não inserção de um novo registro persiste.

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Ter 04 Jul 2017, 02:48

    Up !
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro em Requery

    Mensagem  Alexandre Neves em Ter 04 Jul 2017, 17:08

    Boa tarde,
    Já não tenho a bd. Pode disponibilizar?


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

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Qui 06 Jul 2017, 02:30

    Boa noite

    Sim, vou disponibilizar.

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Sex 07 Jul 2017, 00:56

    Boa noite, Alexandre

    Segue BD em anexo.
    Anexos
    FMA - Erro em Requery.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (128 Kb) Baixado 4 vez(es)
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro em Requery

    Mensagem  Alexandre Neves em Sex 07 Jul 2017, 18:01

    Boa tarde
    Introduzi TipoContabil=1
    A consulta (SELECT CodConsumo, DataPedido, ValorAPagar, TipoContabil, Usuario, DataUsuario FROM T10_Consumo WHERE CodConsumo=1) diz que não existe DataPedido
    Coloquei DataConsumo em vez de DataPedido e não devolve nenhum registo porque na tabela T10_Consumo não tem nenhum registo com CodConsumo=1


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

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Sab 08 Jul 2017, 20:08

    Boa tarde, Alexandre

    Realmente agora que você falou não existe o campo 'DataPedido' e sim 'DataConsumo'.
    PS: Esse campo 'DataPedido' é da outra rotina que estava funcionando e copiei para essa, e até hoje por mais que tivesse olhado não havia percebido, a não ser agora que você falou, vai entender isso... deve ser a idade...

    Fiz a correção pelo campo 'DataConsumo' e funcionou perfeito. Observe que na tabela 'T102_ConsumoXPagto' do arquivo enviado deve ter gerado um novo registro que provavelmente irá mostrar no último registro do formulário F10_Consumo - Guia: Caixa Pagamento, pois na rotina após gerar o novo registro estava indo para o primeiro registro da tabela no formulário, porisso que você não percebeu que tinha sido gerado o registro. Já fiz essa correção também.

    Funciona assim:
    1) No formulário F10_Consumo quando é criado um novo registro para a tabela 'T10_Consumo', e se faz o pagamento desse consumo pelo subformulário 'F102_ConsumoXPagto' que é gravado na tabela 'T102_ConsumoXPagto'.
    Existe um relacionamento de um-para-vários entre as tabelas T10_Consumo e T102_ConsumoPagto, respectivamente.

    Após isso, também percebi que faltou apenas um detalhe para finalizarmos esse tópico:
    Como na rotina em questão (** após as correções, ambas em vermelho abaixo **) coloco para que o campo 'IDOperadora' seja igual ao campo 'TipoContabil', após inserir o novo registro ?

    Private Sub TipoContabil_AfterUpdate()
           On Error Resume Next
           
           If TipoContabil = 1 Or TipoContabil = 5 Or TipoContabil = 6 Then  '1:Dinheiro / 5:Cartão de Crédito / 6: Cartão Refeição
              Me!ModoPagto = 1                                               '1: Pagto. Único
              Me.ValorSomatorio = ValorAPagar
              Me!ValorPago = ValorAPagar

              CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto (IDConsumo, DataPagto, ValorPagto, IDOperadora, Usuario, DataUsuario) " & _
                           "SELECT CodConsumo, DataConsumo, ValorAPagar, TipoContabil, Usuario, DataUsuario FROM T10_Consumo " & _
                           "WHERE CodConsumo=" & Me!CodConsumo & ";", dbFailOnError
             Me.Requery
             MsgBox "** ATENÇÃO: Lançamento feito com sucesso !", , "Sistema: Aviso de Operação"
             DoCmd.GoToRecord , , acLast   'VAI PARA ÚLTIMO REGISTRO
           End If

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Erro em Requery

    Mensagem  vileman em Dom 09 Jul 2017, 18:11

    Alexandre, boa tarde

    Não precisa mais a questão:
    Como na rotina em questão (** após as correções, ambas em vermelho abaixo **) coloco para que o campo 'IDOperadora' seja igual ao campo 'TipoContabil', após inserir o novo registro ?

    A rotina já está fazendo isso, ao olhar com mais calma seria apenas em algumas condições, mas nesse caso basta tirar o campo 'TipoContabil' para não associar ao campo 'IDOperadora'.

    Então, dou como Resolvido este tópico.

    E mais uma vez agradeço por mais essa ajuda sua.
    Valeu.

      Data/hora atual: Sab 18 Nov 2017, 08:16