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

    [Resolvido]Como ir para o próximo registro?

    avatar
    kristy23
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 04/01/2016

    [Resolvido]Como ir para o próximo registro? Empty [Resolvido]Como ir para o próximo registro?

    Mensagem  kristy23 4/1/2016, 05:10

    Olá

    Tenho um formulário PedidosVendas com suformulário SubPedidoVendas.
    No subformulário não tenho chave primária, mas duas chaves onde um é FK da tabela PedidosVendas e outra FK(Foreign Key) que é da tabela Produtos.

    No subformulário tenho o campo subtotal com fórmula para fazer cálculo. Como campo com cálculo não é inserido seu valor automaticamente na tabela, eu criei o seguinte o código:




    Private Sub subtotal_Exit(Cancel As Integer)
                   Dim BancoDados As DAO.Database 'declaracao de variaval que armazenará o bd atual
                   Set BancoDados = CurrentDb 'armazena na variavel o banco de dados atual
       
                   Dim tableprimary As Recordset 'declaração de variável do tipo recordset
                   Set tableprimary = CurrentDb.OpenRecordset("tb-pedvenda2", dbOpenTable) 'nome da tabela para a variável table
                   tableprimary.Index = "idpedvenda" 'campo que eu quero procurar um valor (filtrar)
                   tableprimary.Seek "=", Me.idpedvenda.Value 'busca pelo idpedvenda do formulário na tabela através da função seek
       
                   If tableprimary.Fields("idpedvenda").Value = Me.idpedvenda.Value And tableprimary.Fields("idgrade").Value = Me.idgrade.Value Then
                              DoCmd.RunSQL ("UPDATE [tb-pedvenda2] SET [subtotal] = (Formulários![PedVenda]![PedVenda2]![subtotal]) WHERE [tb-pedvenda2]![idpedvenda] = (Formulários![PedVenda]![PedVenda2]![idpedvenda]) AND [tb-pedvenda2]![idgrade] = (Formulários![PedVenda]![PedVenda2]![idgrade])")
                              Else
                                      MsgBox "ERRO!"
                                      MsgBox Me.idpedvenda.Value & (" e ") & Me.idgrade.Value & (" formulário")
                                      MsgBox ("idpedvenda tabela:   ") & tableprimary.Fields("idpedvenda").Value & ("e idgrade tab:  ") & tableprimary.Fields("idgrade").Value
                   End If
       
    End Sub






    Eu só preciso que " tableprimary.Fields("idgrade").Value " vá o próximo registro. Não sei como fazer para ele ir para o próximo.

    Alguém pode me ajudar?
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  Alvaro Teixeira 4/1/2016, 17:54

    Olá Lina, Bem-vinda ao fórum.
    Não compreendi bem o que pretende fazer com esse código, o que pretende obter.
    No entanto tente:

    tableprimary.movenext

    Caso não funcione, poste pequeno exemplo com a informação envolvida, de forma a que seja possível aos membros testar e poder ajudar.
    Abraço
    avatar
    kristy23
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 04/01/2016

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  kristy23 4/1/2016, 21:57

    Obrigada pelo retorno ahteixeira.

    é isso mesmo que preciso mas a função movenext não deu certo.
    tentei. coloquei depois do end if.

    eu preciso justamente que a tableprimary.fiels("idgrade").value vá para a próxima linha.

    não sei como fazer andar para o próximo registro.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  Alvaro Teixeira 5/1/2016, 01:09

    Olá, para fazer o que pretende talvez seja melhor utilizar o recordset.
    Poste exemplo do que tem, será mais fácil para analisar e testar a melhor solução.
    Abraço


    Última edição por ahteixeira em 5/1/2016, 08:13, editado 1 vez(es)
    avatar
    kristy23
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 04/01/2016

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  kristy23 5/1/2016, 03:20

    Meu código está postado acima AhTeixeira.

    Não entendi quando vc escreveu "posta o que tem" rs

    Se puder dar exemplo com o recordset que você mencionou, agradeço.
    Estou programando no vb access aprendendo com a internet.
    Então não tenho conhecimento.

    Obrigada por enqto.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  Cláudio Más 5/1/2016, 04:08

    Olá,

    Creio que não é possível utilizar movenext com seek.

    Pelo que entendi, está faltando a busca (seek) pelo idgrade, além de idpedvenda.

    Talvez não seja necessário o seek, a instrução SQL já faz o filtro na cláusula WHERE.
    Poderia testar o código apenas com a instrução DoCmd.RunSQL("Update...")?
    Se possível em uma cópia do banco de dados.
    avatar
    kristy23
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 04/01/2016

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  kristy23 5/1/2016, 04:14

    Oi Cláudio.
    Foi o que eu acabei fazendo.

    Fui testando e consegui.
    (Acabei de testar e consegui justamente agora. rs)

    Criei uma outra variável e lá fiz select para poder mover para o próximo registro.
    (Pelo menos testei apenas em um registro que eu já tinha. Não tentei em um outro novo registro)

    Meu código ficou assim:




    Private Sub subtotal_Exit(Cancel As Integer)
        Dim BancoDados As DAO.Database 'declaracao de variaval que armazenará o bd atual
        Set BancoDados = CurrentDb 'armazena na variavel o banco de dados atual
       
       Dim tableprimary As DAO.Recordset 'declaração de variável do tipo recordset
        Set tableprimary = CurrentDb.OpenRecordset("tb-pedvenda2", dbOpenTable) 'nome da tabela para a variável table
        tableprimary.Index = "idpedvenda" 'campo que eu quero procurar um valor (filtrar)
        tableprimary.Seek "=", Me.idpedvenda.Value 'busca pelo idpedvenda do formulário na tabela através da função seek
       
        Dim VSubtotal As DAO.Recordset
        Set VSubtotal = BancoDados.OpenRecordset("SELECT * FROM [tb-pedvenda2] WHERE [tb-pedvenda2]![idgrade] = " & Me.idgrade.Value & " AND [tb-pedvenda2]![idpedvenda] = " & Me.idpedvenda.Value)
       
        If tableprimary.Fields("idpedvenda").Value = Me.idpedvenda.Value And VSubtotal.Fields("idgrade").Value = Me.idgrade.Value Then
           DoCmd.RunSQL ("UPDATE [tb-pedvenda2] SET [subtotal] = (Formulários![PedVenda]![PedVenda2]![subtotal]) WHERE [tb-pedvenda2]![idpedvenda] = (Formulários![PedVenda]![PedVenda2]![idpedvenda]) AND [tb-pedvenda2]![idgrade] = (Formulários![PedVenda]![PedVenda2]![idgrade])")

          Else
                      MsgBox "ERRO!"
                      MsgBox Me.idpedvenda.Value & (" e ") & Me.idgrade.Value & (" formulário")
                      MsgBox ("idpedvenda tabela:   ") & tableprimary.Fields("idpedvenda").Value & ("e idgrade tab:  ") & tableprimary.Fields("idgrade").Value
      End If
        VSubtotal.MoveNext
    End Sub




    Problema resolvido.

    Obrigado AhTeixeira e Cláudio.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  Cláudio Más 5/1/2016, 04:17

    De nada, disponha.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  Alvaro Teixeira 5/1/2016, 08:11

    Olá a todos,

    Lina, obrigado pelo retorno, o fórum agradece.
    No entanto, para o tópico ficar concluído faltou o "Resolvido".
    Desta vez eu coloco, de futuro veja como fazer:
    https://www.maximoaccess.com/t860-resolucao-de-topicos

    Abraço e bons estudos

    Conteúdo patrocinado


    [Resolvido]Como ir para o próximo registro? Empty Re: [Resolvido]Como ir para o próximo registro?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 21:55