MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

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 : 168
    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

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3231
    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 : 168
    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 : 168
    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

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3231
    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 : 168
    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

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3231
    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 : 168
    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

    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 : 168
    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

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3231
    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: Seg 05 Dez 2016, 16:35