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

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Compartilhe

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 26/2/2018, 00:11

    Senhores,

    Tenho o campo Ordem na tabela TBL_fluxo e estou utilizando o código abaixo para reclassificar a numeração no campo ordem tanto ao inserir novo registro que tenha uma ordem anterior, como nos registros anteriores, caso seja necessário reclassificá-los:

    Exemplo:

    Situação atual da ordenação
    Ordem Descrição
    1 débito tarifas
    2 receita de vendas
    3 Compra de tonner
    4 débito extrato

    Nova situação de ordenação troca o número de ordenação da ordem 4 - débito extrato para 1 - débito de extrato com isso a nova ordenação deveria ser:
    1 débito extrato
    2 débito tarifas
    3 receita de vendas
    4 Compra de tonner

    Veja abaixo o código que estou utilizando, porém não está classificando corretamente:

    Private Sub ORDEM_AfterUpdate()
    Dim rs As Recordset, NovaOrdem As Integer, NUM As String
    DoCmd.RunCommand acCmdSaveRecord

    If IsNull(Me.ORDEM) Then
    Exit Sub
    End If

    Set rs = CurrentDb.OpenRecordset("SELECT [tbl_fluxo].Num, [tbl_fluxo].Ordem " & _
    "FROM [tbl_fluxo] " & _
    "ORDER BY [tbl_fluxo].ordem;")

    With rs
    .MoveFirst
    .FindFirst "[ordem]= " & Me.ORDEM
    If .NoMatch Then
    .FindFirst "[num]= '" & Me.NUM & "'"
    .Edit
    !ORDEM = Me.ORDEM
    .Update
    GoTo Final

    Else
    NovaOrdem = Me.ORDEM
    NUM = Me.NUM

    Do While Not .EOF
    .Edit
    !ORDEM = !ORDEM + 1
    .Update
    .MoveNext
    Loop
    End If

    End With

    DoCmd.RunSQL "UPDATE [tbl_fluxo] SET ordem =" & NovaOrdem & " WHERE num = " & Me.NUM & ";"
    Me.Refresh



    GoTo Final

    Final:
    rs.Close
    Set rs = Nothing
    On Error Resume Next
    End Sub
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 26/2/2018, 13:42

    Olá, se vc tem esse valor "débito extrato" salvo em algum campo, basta na consulta, em um campo ou na parte final Order By, crie um Seimed([Campoxxx]='débito extrato';1;Seimed([Campoxxx]='débito tarifas';2)) Continue o código e no Final, terá o que precisa.

    Dica: Comece fazendo em uma consulta FÍSICA do access, depois mude par ao Código.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 26/2/2018, 22:24

    Situação atual

    No exemplo abaixo, tem dois campos Campo1 "Ordem" e Campo2 "Descrição, onde o campo "Ordem" é responsável pela ordenação dos registros
    Ordem Descrição
    1       débito tarifas 
    2       receita de vendas
    3       Compra de tonner
    4       débito extrato 

    O que eu desejo é que ao mudar por exemplo, o código do exemplo 4 para 1, o access faça nova ordenação colocando no campo "ordem" 2 para a descrição "débito de tarifas", 3 para "receita de vendas" e assim sucessivamente de modo que atualize o campo "ordem" com uma nova numeração a partir do registro alterado no campo ordem.

    Conforme abaixo:

    Mudando a ordem do "Débito extrato" para a posição número de ordem 1, com a reclassificação automática do campo "ordem" para os demais itens. O incremento tem que ser aplicado no campo1 "ordem"

    Ordem Descrição
    1        débito extrato 
    2        débito tarifas 
    3        receita de vendas
    4        Compra de tonner

    Veja o exemplo em anexo, altere um número no campo ordem, ao sair do campo o form fechará, ao abrir novamente está com a nova ordenação, porém o incremento, iniciou após o antigo número de ordem.
    Anexos
    TesteIncremento.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (27 Kb) Baixado 6 vez(es)
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 27/2/2018, 15:01

    Mude o Codigo para:

    Private Sub ORDEM_AfterUpdate()
    CurrentDb.Execute "UPDATE tbl_Fluxo SET ORDEM=" & Me.ORDEM.OldValue & " WHERE ORDEM=" & Me.ORDEM & ""
    Me.Requery
    End Sub

    Altere qualquer Ordem e veja se seria isso...

    Ao ALterar uma ordem de 4 para 1, o que estava com a Ordem 1 assumirá a Ordem 4, pois vc alterou o que era Ordem 4 para 1. Apenas inverte a Ordem.
    Altere o Valor e saia do campo


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 27/2/2018, 18:32

    Fábio boa tarde,

    O que desejo ao alterar uma ordem de 4 para 1, que tudo que estiver após o 1, seja incrementado a partir do 1, de modo que fique novamente 1,2,3,4, ... . Desta forma não é para trocar a posição do 4 pelo 1 e 1 pelo 4 como você disse.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 27/2/2018, 19:17

    Não entendi Nada!

    Tenho essa Ordem:

    1       D
    2       R
    3       C
    4       DE



    Digamos que queira Trocar o valor
    2       R

    por 1


    Como Ficaria?

    ??       D
         R
    3       C
    4       DE



    Esqueça a Classificação... Isso ocorrerá automaticamente. Penas me diga qual Valor Receberá os Itens D, C e DE


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 27/2/2018, 19:29

    Fábio boa tarde,

    Tem o campo ordem que está numerado por exemplo assim:
    1
    2
    3
    4
    5

    Se eu for no registro onde o campo ordem estiver com 5 e substituir o 5 por 1, o código ajustará a numeração a partir do 1. De modo que o campo que era 1, seja alterado para 2, o próximo 3, e assim sucessivamente.
    1
    2
    3
    4
    5

    Veja o exemplo original em access que enviei. Lá faz quase o que eu quero, tem erro que está pulando uma sequência.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 1/3/2018, 02:27

    Mude o Código para esse:

    Código:
    If Me.ORDEM = Me.ORDEM.OldValue Then
        Exit Sub
    Else

        Dim rs1, rs2 As DAO.Recordset
        Dim db As Database
        Dim F As Integer
        Set db = CurrentDb()
        'Divido em duas Consultas: Uma buscando todos com NUM> que o da Ordem Alterada e a Outra com o NUM menor que o da ordem alterada.
        'Dessa forma, todos com NUM> receberão os Numeros Subsequentes
        'Os Anteriores receberao Ordem restante.
        Set rs1 = db.OpenRecordset("SELECT * FROM tbl_Fluxo WHERE NUM> " & Me.NUM & "")
        Set rs2 = db.OpenRecordset("SELECT * FROM tbl_Fluxo WHERE NUM< " & Me.NUM & "")
        F = Me.ORDEM + 1
        Debug.Print Me.ORDEM + 1
            Do While Not rs1.EOF
                    rs1.Edit
                    rs1!ORDEM = F
                rs1.Update
            F = F + 1
            rs1.MoveNext
            Loop
       
       
            Do While Not rs2.EOF
                    rs2.Edit
                    rs2!ORDEM = F
                rs2.Update
            F = F + 1
            rs2.MoveNext
            Loop
       
        Set rs1 = Nothing
        Set rs2 = Nothing
        Set db = Nothing
        Me.Requery
    End If


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 1/3/2018, 11:21


    Fábio bom dia,

    Veja como ficou, porém não é isso desejado.


    Situação antes do código do Fábio

    NUM ORDEM Descrição
    251 1 Compra de tonner
    252 2 débito extrato
    249 3 débito tarifas
    250 4 receita de vendas



    Situação depois do código do Fábio

    NUM ORDEM Descrição
    249 1 débito tarifas
    250 2 receita de vendas
    251 3 Compra de tonner
    252 4 débito extrato


    Situação desejada
    NUM ORDEM Descrição
    249 1 débito tarifas
    251 2 Compra de tonner
    252 3 débito extrato
    250 4 receita de vendas
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 2/3/2018, 12:29

    Desculpe Amigo, suas explicações anteriores me fizeram entender uma coisa e agora vc diz outra... Não nao consigo resolver seu problema sem entender o que realmente precisa.

    Faça um teste com essa explicação e veja se não é o que me falou.

    Tem o campo ordem que está numerado por exemplo assim:
    1
    2
    3
    4
    5

    Se eu for no registro onde o campo ordem estiver com 5 e substituir o 5 por 1, o código ajustará a numeração a partir do 1. De modo que o campo que era 1, seja alterado para 2, o próximo 3, e assim sucessivamente.
    1
    2
    3
    4
    5


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 2/3/2018, 17:32

    Fabio boa tarde,

    O código não está fazendo conforme o escrito acima:

    Antes de alterar, o número 3 para 1 no campo ordem a numeração do campo ordem e campo descrição era:

    NUM ORDEM Descrição
    251 1 Compra de tonner
    252 2 débito extrato
    249 3 débito tarifas
    250 4 receita de vendas

    Depois de alterar, o número 3 para 1 no campo ordem a numeração do campo ordem e campo descrição deveria ser:

    A nova sequência no campo ordem deveria ser 1 – debito de tarifas; 2 – compra de tonner; 3 – débito extrato; 4 – receita de vendas.

    Porém o seu código fez assim:
    1 – debito tarifas, 2 – receita de vendas, 3 – compra de tonner; 4 – debito extrato.

    NUM ORDEM Descrição
    249 1 débito tarifas
    250 2 receita de vendas
    251 3 Compra de tonner
    252 4 débito extrato

    Veja por favor, o exemplo em anexo com a inclusão do seu código.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 2/3/2018, 17:48

    Amigo, O problema foi que vc não soube me Explicar o que precisava.

    Mude seu Código para:

    Código:
    Dim rs1 As DAO.Recordset
        Dim db As Database
        Dim F As Integer
        Set db = CurrentDb()
        Set rs1 = db.OpenRecordset("SELECT * FROM tbl_Fluxo WHERE ORDEM<> " & Me.ORDEM.OldValue & " ORDER BY ORDEM")
        F = Me.ORDEM + 1
        Debug.Print Me.ORDEM + 1
            Do While Not rs1.EOF
                    rs1.Edit
                    rs1!ORDEM = F
                rs1.Update
            F = F + 1
            rs1.MoveNext
            Loop
        Set rs1 = Nothing
        Set db = Nothing
        Me.Requery


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 2/3/2018, 23:57

    Veja abaixo, antes de alterar um campo ordem
    NUM ORDEM Descrição
    249 1 débito tarifas
    252 2 débito extrato
    250 3 receita de vendas
    251 4 Compra de tonner

    Veja agora alterado o campo que está com ordem 3 para 2, o que deveria fazer era colocar “receita de vendas” com o com campo ordem igual a 2, “débito extrato” campo ordem igual a  3 e “compra de tonner” campo ordem igual a 4, ou seja, só queria mudar o campo que era 3 para 2, e o campo que era 2 para 3. A ideia era só trocar os dois campos de posição 3 para 2 e 2 para 3.

    Porém o novo código está fazendo o seguinte, levou o campo ordem igual a 3 para início da numeração e renumerado todos os outros.
    NUM ORDEM Descrição
    250 2 receita de vendas
    249 3 débito tarifas
    252 4 débito extrato
    251 5 Compra de tonner

    De forma bem simples e resumida o que desejo é mover a posição de uma linha para outra. Exemplos, mudar a posição da linha 2 para linha 1, ou mudar posição da linha 5 para linha 4, ou mudar posição da linha 5 para a linha 3. Como se estivesse em uma planilha do excel movendo as linhas de posição.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  FabioPaes em 3/3/2018, 20:54

    Desculpe amigo, Não consigo lhe ajudar!

    Caso alguém tenha entendido a Dúvida do colega, por favor dê sequencia ao Tópico!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    SAPMM
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 359
    Registrado : 07/08/2011

    Renumerar registros para alteração de código de classificação (Incrementar numeração)

    Mensagem  SAPMM em 3/3/2018, 21:20

    OK, talvez se explicar o contexto todo fica mais fácil o entendimento de minha necessidade.

    De forma bem simples e resumida o que desejo é mover a posição de uma linha para outra. Exemplos, mudar a posição da linha 2 para linha 1, ou mudar posição da linha 5 para linha 4, ou mudar posição da linha 5 para a linha 3. Como se estivesse em uma planilha do excel movendo as linhas de posição.

    O porquê que eu tenho a necessidade acima é para aplicar em um formulário folha de dados de um fluxo de caixa, onde uma linha de registro que esteja na posição 10 por exemplo e desejo levar essa linha para a posição 8. Por quê disso, para recalcular o saldo de um fluxo de caixa levando uma despesa ou receita que estava na posição 10 e precisa ir para a posição 8.

      Data/hora atual: 17/7/2018, 01:22