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


2 participantes

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  JSommavilla 17/7/2015, 14:29

    Por favor, preciso de uma luz!

    Não tenho muita experiencia no access. Mas, após várias consultas aqui no fórum e em outros sites, não consegui desvendar a seguinte duvida:

    Tenho uma tabela no access chamada "Telefone Movel".  Fiz um código para a importação do arquivo texto da operadora direto para essa tabela. Os campos da tabela eu defini tudo como texto curto, pois só assim eu consigo importar os dados. Se eu mudar a formatação da tabela para data, número, a importação não é feita, pois dá o erro de formatação dos dados.

    Gostaria de saber se tem como, no código de importação, eu já formatar os campos para data, numero, etc., porque depois, preciso pesquisar por data, numero de telefone, etc. Já tentei o cDate, e outras formas de formatação, mas ainda não consegui.

    Outro detalhe, o cabeçalho do arquivo, neste exemplo tem 27 linhas. Porém, em outros arquivos texto ele tem menos ou mais linhas... Poderia o código calcular automaticamente o numero de linhas do cabeçalho?

    Caso alguém possa me ajudar, agradeço antecipadamente.

    Segue abaixo o código, que até aqui consegui desenvolver depois de muita pesquisa:


    Sub telefonemovel()

    Dim Linha As String
    Dim rs As DAO.Recordset
    Dim Matriz() As String
    Dim fDialog As Office.FileDialog


    'Dimensiona o objeto
    Dim Fd As Object

    'Define a caixa de diálogo como seleção de pasta(s)
    Set Fd = Application.FileDialog(1)


    'Define as propriedades da caixa de diálogo

    With Fd

    'Título da caixa de diálogo

    .Title = "Selecione o local onde se encontra o arquivo..."
    .Filters.Clear
    .Filters.Add "Access Projects", "*.TXT"

    'Caso este método retorne Verdadeiro significa que o usuário selecionou uma pasta
    If .Show Then

    'Retorna o caminho da pasta para a função
    SelecionarPasta = .SelectedItems(1)

    Else

    MsgBox "Clique em 'OK' para abortar a importação."

    End If

    End With


    'Finaliza o objeto
    Set Fd = Nothing

    f = FreeFile

    Set rs = CurrentDb.OpenRecordset("Telefone Movel")

    Open SelecionarPasta For Input As #f

    Line Input #f, Linha ' Pula a 1ª linha
    Line Input #f, Linha ' Pula a 2ª linha
    Line Input #f, Linha ' Pula a 3ª linha
    Line Input #f, Linha ' Pula a 4ª linha
    Line Input #f, Linha ' Pula a 5ª linha
    Line Input #f, Linha ' Pula a 6ª linha
    Line Input #f, Linha ' Pula a 7ª linha
    Line Input #f, Linha ' Pula a 8ª linha
    Line Input #f, Linha ' Pula a 9ª linha
    Line Input #f, Linha ' Pula a 10ª linha
    Line Input #f, Linha ' Pula a 11ª linha
    Line Input #f, Linha ' Pula a 12ª linha
    Line Input #f, Linha ' Pula a 13ª linha
    Line Input #f, Linha ' Pula a 14ª linha
    Line Input #f, Linha ' Pula a 15ª linha
    Line Input #f, Linha ' Pula a 16ª linha
    Line Input #f, Linha ' Pula a 17ª linha
    Line Input #f, Linha ' Pula a 18ª linha
    Line Input #f, Linha ' Pula a 19ª linha
    Line Input #f, Linha ' Pula a 20ª linha
    Line Input #f, Linha ' Pula a 21ª linha
    Line Input #f, Linha ' Pula a 22ª linha
    Line Input #f, Linha ' Pula a 23ª linha
    Line Input #f, Linha ' Pula a 24ª linha
    Line Input #f, Linha ' Pula a 25ª linha
    Line Input #f, Linha ' Pula a 26ª linha
    Line Input #f, Linha ' Pula a 27ª linha
    Line Input #f, Linha ' Pula a 28ª linha

    Do While Not EOF(f)  ' Começa a importação a partir da 28ª linha

    Matriz() = Split(Linha, ";")
    rs.AddNew
    rs!Tel = Matriz(0) ' Se não tiver delimitador ";" no começo a matriz começaria de Zero
    rs!Seção = Matriz(1)
    rs!data = Matriz(2)
    rs!Hora = Matriz(3)
    rs!OrigemDestino = Matriz(4)
    rs!Número = Matriz(5)
    rs!Duração = Matriz(6)
    rs!Tarifa = Matriz(7)
    rs!valor = Matriz(Cool
    rs!ValorCobrado = Matriz(9)
    rs!Nome = Matriz(10)
    rs!CC = Matriz(11)
    rs!Matricula = Matriz(12)
    rs!SubSeção = Matriz(13)
    rs!TipoImposto = Matriz(14)
    rs!Descrição = Matriz(15)
    rs!Cargo = Matriz(16)
    rs.Update

    Line Input #f, Linha 'lê uma linha do arquivo texto

    Loop

    Close #f

    rs.Close

    MsgBox "Arquivo Importado com Sucesso!", vbInformation, "Importação de arquivo txt"

    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8464
    Registrado : 05/11/2009

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  Alexandre Neves 24/7/2015, 19:48

    Boa tarde, e bem-vindo ao fórum
    Formate os dados ao importar
    ex: rs!data = CDate(Matriz(2))


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  JSommavilla 24/7/2015, 19:59

    Prezado Alexandre Neves,

    Obrigado por responder.
    Fiz como você orientou. Também formatei o campo da tabela de texto para data. Porém, ainda dá "erro em tempo de execução 13 tipos incompatíveis".
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8464
    Registrado : 05/11/2009

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  Alexandre Neves 24/7/2015, 20:26

    Qual o valor de Matriz(2)?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  JSommavilla 24/7/2015, 20:32

    Prezado,

    O valor deste campo é uma data, exemplo: 24/07/2015. Ou seja, no arquivo texto a ser importado, já está desta forma. Porém, também tem linhas que esse campo está em branco.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8464
    Registrado : 05/11/2009

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  Alexandre Neves 24/7/2015, 20:40

    faça uma verificação antes de importar
    if len(Matriz(2) &"")>0 then rs!data = CDate(Matriz(2))


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  JSommavilla 24/7/2015, 21:18

    Coloquei o comando em várias posições antes de importar, porém, agora a mensagem, é: "erro em tempo de execução 9 subscrito fora do intervalo"
    Onde exatamente devo colocar essa verificação no código?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8464
    Registrado : 05/11/2009

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  Alexandre Neves 24/7/2015, 21:53

    coloque no mesmo lugar que estava


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    JSommavilla
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 21/09/2014

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  JSommavilla 25/7/2015, 03:50

    Prezado Alexandre Neves, agradeço muitíssimo pela ajuda! Very Happy

    Com sua preciosa dica, o código funcionou perfeitamente. Para exemplificar, reproduzo o código abaixo com o "Antes e Depois", para que possa servir a alguém com a mesma dúvida.
    Acrescento, ainda, que aproveitando a sua dica, fiz as alterções para outros campos que armazenam valores.

    Nota: A tabela que receberá os valores, as colunas tem que estar formatadas de acordo com as informações que irão armazenar. No meu caso: Na tabela TelefoneMovel1, ficou assim:

    coluna data: tipo: Data/hora

    coluna valor: tipo: número, tamanho do campo: duplo, casas decimais =2

    coluna valorcobrado: tipo: número, tamanho do campo: duplo, casas decimais =2

    coluna cargo: tipo: número, tamanho do campo: duplo, casas decimais =0

    Código:

    Matriz() = Split(Linha, ";")
    rs.AddNew
    rs!Tel = Matriz(0) ' Se não tiver delimitador ";" no começo a matriz começaria de Zero
    rs!Seção = Matriz(1)

    'rs!data = Matriz(2) ' ANTES 2
    If Len(Matriz(2) & "") > 0 Then rs!data = CDate(Matriz(2)) 'DEPOIS 2

    rs!Hora = Matriz(3)
    rs!OrigemDestino = Matriz(4)
    rs!Número = Matriz(5)
    rs!Duração = Matriz(6)
    rs!Tarifa = Matriz(7)

    'rs!valor = Matriz(Cool ' ANTES 8
    If Len(Matriz(Cool & "") <> 0 Then rs!valor = Format((Matriz(Cool), "##.##0,00") 'DEPOIS 8

    'rs!valorCobrado = Matriz(9) 'ANTES 9
    If Len(Matriz(9) & "") <> 0 Then rs!valorCobrado = Format((Matriz(9)), "##.##0,00") 'DEPOIS 9

    rs!Nome = Matriz(10)
    rs!CC = Matriz(11)

    'rs!Matricula = Matriz(12)'ANTES 12
    If Len(Matriz(12) & "") <> 0 Then rs!Matricula = Format((Matriz(12)), "##.##0,00") 'DEPOIS 12

    rs!SubSeção = Matriz(13)
    rs!TipoImposto = Matriz(14)
    rs!Descrição = Matriz(15)

    'rs!Cargo = Matriz(16)' ANTES 16
    If Len(Matriz(16) & "") <> 0 Then rs!Cargo = Format((Matriz(16)), "##.##0") ' DEPOIS16

    rs.Update
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8464
    Registrado : 05/11/2009

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  Alexandre Neves 25/7/2015, 08:05

    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? MaximoAccess%20ResolvidoMarcado


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número? Empty Re: [Resolvido]Após importar texto para uma tabela, como formatar os campos de data e número?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/9/2024, 01:19