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]Como ir para o próximo registro?

    Compartilhe

    kristy23
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  kristy23 em Seg 04 Jan 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?
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Seg 04 Jan 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

    kristy23
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  kristy23 em Seg 04 Jan 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.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Ter 05 Jan 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 Ter 05 Jan 2016, 08:13, editado 1 vez(es)

    kristy23
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  kristy23 em Ter 05 Jan 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.
    avatar
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Cláudio Más em Ter 05 Jan 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.

    kristy23
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  kristy23 em Ter 05 Jan 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.
    avatar
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Cláudio Más em Ter 05 Jan 2016, 04:17

    De nada, disponha.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Ter 05 Jan 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:
    [Você precisa estar registrado e conectado para ver este link.]

    Abraço e bons estudos

      Data/hora atual: Qui 21 Set 2017, 19:29