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(
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
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(
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