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]Aplicar formatação em dados da tabela

    Compartilhe

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 174
    Registrado : 29/04/2011

    Aplicar formatação em dados da tabela

    Mensagem  vinicius.anna em Qui 07 Nov 2013, 15:39

    Boa tarde

    Possuo uma tabela onde um determinado campo está gravado conforme abaixo:
    Dados da tabela
    1
    11
    1101
    110101
    11010102
    11010102001

    Preciso fazer com que este campo seja gravado com formatação, conforme abaixo:
    1
    1.1
    1.1.01
    1.1.01.01
    1.1.01.01.02
    1.1.01.01.02.001

    Alguém tem alguma dica de como posso fazê-lo

    Obrigado.

    Att. Vinicius
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3568
    Registrado : 20/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  Silvio em Qui 07 Nov 2013, 15:51

    algo assim...

    Código:
     If Len(seucampo) <> "" Then
        Select Case Len(seu campo)
            Case 1
                Me.seucampo.Format = "@"
            Case 2
                Me.seucampo.Format = "@.@"
             Case 4
                Me.seucampo.Format = "@.@.@@"
    end select
    end  if  
           

    e assim por diante.....


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 174
    Registrado : 29/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  vinicius.anna em Qui 07 Nov 2013, 16:29

    Boa tarde Silvio,

    Muito obrigado pela ajuda

    Mas não consegui fazer com que funcione.....

    Disponibilizo em anexo parte da tabela onde tenho o campo Conta, que a conta sem a máscara e o campo contamascara que irá receber a conta com o formato definido.

    No formulário criei o botão mas não consegui fazer com que funcione corretamente.

    Se puder me mostrar onde estou errando, lhe agradeço.

    Desculpe a falta de conhecimento.

    Att. Vinicius
    Anexos
    Teste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (48 Kb) Baixado 16 vez(es)
    O autor desta mensagem foi removido do fórum - Ver a mensagem

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 174
    Registrado : 29/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  vinicius.anna em Qui 07 Nov 2013, 21:26

    Boa noite,

    Sim, preciso aproveitar

    Att Vinicius
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3568
    Registrado : 20/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  Silvio em Qui 07 Nov 2013, 22:06

    Boa noite...

    Beto valeu pela ajuda...

    Apenas dando um pitaquinho, no teu código:

    Código:
    Private Sub Conta_AfterUpdate()
    If Len(Me.Conta) = 1 Then
    Me.Conta.InputMask = ""
    ElseIf Len(Me.Conta) = 2 Then
    Me.ContaMascara = Format(Me.Conta, "0\.0")
    End If

    If Len(Me.Conta) = 4 Then
    Me.ContaMascara = Format(Me.Conta, "0\.0\.00")
    End If

    If Len(Me.Conta) = 6 Then
    Me.ContaMascara = Format(Me.Conta, "0\.0\.00\.00")
    ElseIf Len(Me.Conta) = 8 Then
    Me.ContaMascara = Format(Me.Conta, "0\.0\.00\.00\.00")
    End If

    If Len(Me.Conta) = 11 Then
    Me.ContaMascara = Format(Me.Conta, "0\.0\.00\.00\.00\.000")

    End If

    End Sub
    Está o mesmo perfeito.

    Abraços desse teu amigo.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 174
    Registrado : 29/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  vinicius.anna em Qui 07 Nov 2013, 22:39

    Boa noite

    Fiz os testes e o código abaixo funcionou perfeitamente:

    Código:

    If Len(Me.Conta) = 1 Then
        Me.Conta.InputMask = ""
    ElseIf Len(Me.Conta) = 2 Then
        Me.ContaMascara = Format(Me.Conta, "@\.@")
    End If
    If Len(Me.Conta) = 4 Then
        Me.ContaMascara = Format(Me.Conta, "@\.@\.@@")
    End If
    If Len(Me.Conta) = 6 Then
        Me.ContaMascara = Format(Me.Conta, "@\.@\.@@\.@@")
    End If
    If Len(Me.Conta) = 8 Then
        Me.ContaMascara = Format(Me.Conta, "@\.@\.@@\.@@\.@@")
    End If
    If Len(Me.Conta) = 11 Then
        Me.ContaMascara = Format(Me.Conta, "@\.@\.@@\.@@\.@@\.@@@")
    End If

    O problema é que a tabela tem em torno de 500.000 registros, ai estava tentando fazer uma adaptação da seguinte forma:

    Código:

    Dim strSql As String
    Dim rs As DAO.Recordset
    Dim ym As Long
    Dim k As Long
    strSql = "SELECT * FROM reg_I050 ORDER BY Id_Registro;"
    Set rs = CurrentDb.OpenRecordset(strSql)
    rs.MoveFirst
    ym = Val(Len(rs!Conta))
    k = 0
    Do While Not rs.EOF
        If Len(rs!Conta) = 1 Then
            'Me.Conta.InputMask = ""
            'ym = Val(rs!Conta.InputMask = "@")
        ElseIf Len(Me.Conta) = 2 Then
            'ContaMascara = Format(Me.Conta, "@\.@")
            ym = Val(Format(rs!Conta, "@\.@"))
            k = k + 1
        ElseIf Len(Me.Conta) = 4 Then
            'ContaMascara = Format(Me.Conta, "@\.@\.@@")
            ym = Val(Format(rs!Conta, "@\.@\.@@"))
            k = k + 1
        ElseIf Len(Me.Conta) = 6 Then
            'ContaMascara = Format(Me.Conta, "@\.@\.@@\.@@")
            ym = Val(Format(rs!Conta, "@\.@\.@@\.@@"))
            k = k + 1
        ElseIf Len(Me.Conta) = 8 Then
            'ContaMascara = Format(Me.Conta, "@\.@\.@@\.@@\.@@")
            ym = Val(Format(rs!Conta, "@\.@\.@@\.@@\.@@"))
            k = k + 1
        ElseIf Len(Me.Conta) = 11 Then
            'ContaMascara = Format(Me.Conta, "@\.@\.@@\.@@\.@@\.@@@")
            ym = Val(Format(rs!Conta, "@\.@\.@@\.@@\.@@\.@@@"))
            k = k + 1
        End If
        rs.Edit
            rs!ContaMascara = Val(ym)
        rs.Update
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    MsgBox "Término da montagem...."
    com esta adaptação até que executa, sem mensagem de erros, porém, o campo ContaMascara, para todos os registros grava apenas o n. 1.
    Tem alguma dica de como posso fazê-lo.

    E muito obrigado pela ajuda / atençao.

    Saudações
    Vinicius
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3568
    Registrado : 20/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  Silvio em Qui 07 Nov 2013, 22:50

    Por algum acaso.....está nessa rotina:

    Private Sub Conta_AfterUpdate()
    Se não estiver...nada feito mesmo

    O exemplo do colega Beto, esta funfando legal.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 174
    Registrado : 29/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  vinicius.anna em Qui 07 Nov 2013, 22:57

    Boa noite,

    Sim, o código está funcionando perfeitamente......., coloquei ele no evento Private Sub Conta_Exit(Cancel As Integer), ai basta passar pelo campo...., fica simples, o meu último problema é a quantidade de registros, tem quase 500.000, por isso estava tentando adaptar.

    Saudações
    Vinicius
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    avatar
    Beto Givoni
    VIP
    VIP

    Respeito às Regras 0%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1207
    Registrado : 04/01/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  Beto Givoni em Qui 07 Nov 2013, 23:20

    a não ser que vc queira gravar na tabela sem o formato(máscara) ai sim vc atualizar o campo ContaMascara e num relatório ou até mesmo em um formulário consulta colocar o formato.

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 174
    Registrado : 29/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  vinicius.anna em Qui 07 Nov 2013, 23:46

    Boa noite Beto e Silvio

    Muito obrigado pela ajuda e dicas.

    Beto, com sua última dica sobre o sql me "toquei" do que poderia fazer via sql criando uma tabela temporária e depois atualizando a tabela original.

    O código abaixo faz o que preciso na tabela existente.....

    Código:

    CurrentDb.Execute "INSERT INTO tb_Temp ( Conta, ContaMascara ) SELECT reg_I050.Conta, reg_I050.ContaMascara FROM reg_I050 WHERE (((Len([Conta]))='1'));"
    CurrentDb.Execute "INSERT INTO tb_Temp ( Conta, ContaMascara, teste ) SELECT reg_I050.Conta, Format([Conta],'@\.@') AS ContaTemp, reg_I050.ContaMascara FROM reg_I050 WHERE (((Len([Conta]))='2'));"
    CurrentDb.Execute "INSERT INTO tb_Temp ( Conta, ContaMascara, teste ) SELECT reg_I050.Conta, Format([Conta],'@\.@\.@@') AS ContaTemp, reg_I050.ContaMascara FROM reg_I050 WHERE (((Len([Conta]))='4'));"
    CurrentDb.Execute "INSERT INTO tb_Temp ( Conta, ContaMascara, teste ) SELECT reg_I050.Conta, Format([Conta],'@\.@\.@@\.@@') AS ContaTemp, reg_I050.ContaMascara FROM reg_I050 WHERE (((Len([Conta]))='6'));"
    CurrentDb.Execute "INSERT INTO tb_Temp ( Conta, ContaMascara, teste ) SELECT reg_I050.Conta, Format([Conta],'@\.@\.@@\.@@\.@@') AS ContaTemp, reg_I050.ContaMascara FROM reg_I050 WHERE (((Len([Conta]))='8'));"
    CurrentDb.Execute "INSERT INTO tb_Temp ( Conta, ContaMascara, teste ) SELECT reg_I050.Conta, Format([Conta],'@\.@\.@@\.@@\.@@\.@@@') AS ContaTemp, reg_I050.ContaMascara FROM reg_I050 WHERE (((Len([Conta]))='11'));"

    Saudações
    Vinicius
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3568
    Registrado : 20/04/2011

    Re: [Resolvido]Aplicar formatação em dados da tabela

    Mensagem  Silvio em Sex 08 Nov 2013, 00:23

    Boa noite Beto e Vinicius...

    É para isso que estamos todos aqui.....aprendendo e ensinando uns com os outros.

    Abraços a ambos.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Qui 17 Ago 2017, 02:45