boom.. pra começar eu tenho um formulario no access que tem 2 botoes que abrem caixas de dialogo para importação de arquivo: um botão para importar TXT e o outro, o banco de dados MDB onde ira importar as informações.
depois, tenho um botão "IMPORTAR" que ao importar exibe uma mensagem de conclusão com sucesso.
O problema é que quando ele é importado no MDB, qdu eu vou abrir a tabela para onde foi direcionado o arquivo, não aparece nenhuma informação. A impressão que eu tenho é que não foram tratadas corretamente o arquivo na hora da importação.
Gente, vale ressaltar que é de caráter urgente, tendo em vista que até o momento eu fiz de tudo e não consegui achar o problema. Se alguém puder me ajudar eu agradeço muito.
Segue abaixo o arquivo bruto em TXT:
[list]MSQN0977 SEG0034 07/OUT/10 QUI 10:05 BDB MAT3 #..711 DESCARGA DE DADOS DE TRAFEGO (PERIODO:HR)
# TENTATIVAS DE CHAMADAS #
ORIGINACAO 00032542 INTRACENTRAL 00000483
ENTRADA 00188331 TANDEM 00177590
# TENTATIVAS DE CHAMADAS ORIGINADAS #
CHAMADA DE SAIDA LOCAL 00010607 CHAMADA INTERURBANA 00002366
CHAMADA REVERSA 00000000 ABANDONO ANTES DA DISCAGEM 00016666
ABANDONO DURANTE DISCAGEM 00001230 ESGOT. TEMP. PRE DISCAGEM 00000437
ESGOT. TEMP. INTERDIGITAL 00000364 CHAMADA INTERNACIONAL 00000019
RESTRICAO DE SAIDA 00000000 EXCESSO DE PULSOS (DPOR) 00000001
ERRO DE CODIGO (PBOR) 00000019 NUM. DESCONECTADO/REMOVIDO 00000188
NUMERO MUDADO 00000000 NUMERO VAGO 00000000
NUMERO INEXISTENTE 00000140 OCUPADO (IO) 00000163
OCUPADO (OG) 00001533 SINAL A4/B4 RECEBIDO 00000016
ERRO DE CODIGO (MFCOS) 00000000 ABANDONO DURANTE RGT (IO) 00000054
ABANDONO DURANTE RGT (OG) 00002588 BLOQUEIO/SUSPENSAO DE ORIG. 00000473
HORA CERTA 00000000 METEOROLOGIA 00000000
EMERGENCIA/POLICIA 00000009 BOMBEIRO 00000000
SUBLT 00000000 RECLAMACOES 00000000
MSQN0977 SEG0035 07/OUT/10 QUI 10:05 BDB MAT3 #..711 DESCARGA DE DADOS DE TRAFEGO (PERIODO:HR)
# TENTATIVAS DE CHAMADAS DE ENTRADA #
CHAMADA TERMINADA 00009759 ABANDONO ANTES DA RECEPCAO 00000012
ESG.TEMP. ANTES DA RECEPCAO 00000100 ASSINANTE OCUPADO 00007108
EXCESSO DE PULSOS (DPIR) 00000000 ERRO DE CODIGO (MFCIR) 00000003
NUM. DESCONECTADO/REMOVIDO 00003885 NUMERO MUDADO 00000000
NUMERO VAGO 00000036 NUMERO INEXISTENTE 00000701
ABANDONO DURANTE RECEPCAO 00144970 ESG.TEMP. DURANTE RECEPCAO 00000049
SINAL A4/B4 RECEBIDO 00002371 RESTRICAO DE SAIDA 00000000
ERRO DE CODIGO (MFCOS) 00000000 ABANDONO DURANTE RGT 00008478
HORA CERTA 00000000
# CHAMADAS ORIGINADAS COMPLETADAS #
TOTAL 00008015 INTRACENTRAL 00000243
LOCAL 00006502 INTERURBANA 00001254
INTERNACIONAL 00000011 HORA CERTA 00000001
METEOROLOGIA 00000000 EMERGENCIA/POLICIA 00000006
BOMBEIRO 00000001 SUBLT 00000000
RECLAMACOES 00000000 UTILIZ. DESPERTADOR CENTRAL.00000016
UTIL.DESP.CENTRAL. (N.ATEND)00000000 [/list]
OBS: Cada arquivo desse termina em cada MSQN.
Abaixo segue todo o codigo já escrito em VBA:
Private Sub Comando11_Click()
Dim F As Long, sLine As String, A(0 To 8) As String
Dim vCodIndicador As String
Dim pegasequencia() As Integer
Dim db As Database
Dim Indicadores As Recordset
Dim strCaminhoMDB As String
Dim i As Integer
Dim Divisores As String
'String que divide os CDR's no Arquivo texto
Divisores = " MSQN0977 SEG0035 07/OUT/10 QUI 10:05 BDB MAT3"
On Error GoTo trata_erro
F = FreeFile
Open inserir_txt For Input As F
On Error Resume Next
'Seta o caminho do Banco a ser aberto
strCaminhoMDB = "C:\Documents and Settings\K56143\Desktop\61BR\MONITORAÇÃO_61BR.mdb"
Set db = OpenDatabase(strCaminhoMDB)
'Abre a Tabela para acrescentar aos Registros
Set Indicadores = db.OpenRecordset("DESCARGA_DE_DADOS_DE_TRAFEGO", dbOpenTable)
'Carrega no Array os campos que precisam ser gravados
Call CarregaCamposRelevates
Do While Not EOF(F)
inserir_txt.Value = inserir_txt.Value + 1 ' contando numero de registro processados
Line Input #F, sLine
'se a linha lida for = a 50 traços (divisor entre um CDR's do Arquivo insere os registros no mdb
If Trim(sLine) = Divisores Then
Indicadores.AddNew
Indicadores![DATA/HORA] = A(0)
Indicadores![OK (LOCAL)] = A(1)
Indicadores![OK (INTRACENTRAL)] = A(2)
Indicadores![LO (OCUPADO - OG)] = A(3)
Indicadores![LO (OCUPADO - IO)] = A(4)
Indicadores![CO (SINAL A4/B4 RECEBIDO)] = A(5)
Indicadores![NR (ABANDONO DURANTE RGT - OG)] = A(6)
Indicadores![NR (ABANDONO DURANTE RGT - IO)] = A(7)
Indicadores![OU (NUMERO MUDADO)] = A(8)
Indicadores.Update
End If
ParseToArray sLine, A()
Loop
MsgBox "Arquivo texto importado com sucesso !! "
Close #F
Indicadores.Close
Exit Sub
trata_erro:
MsgBox "Ocorreu o erro ==> " & Err.Description
End Sub
' Trata o delimItador Ex ParseToArray(SLine As String, A() As String)
Private Sub ParseToArray(sLine As String, A() As String)
Dim P As Long, LastPos As Long, i As Long
Dim Campo As String
P = InStr(sLine, " ")
Dim Posicao As Long
'se ler uma linha em branco não faz nada
If Trim(sLine) = "" Then
Exit Sub
End If
Do While P
Campo = Trim(Mid$(sLine, LastPos + 1, P - LastPos - 1))
'recebe a posição do vetor a ser armazenado o campo
Posicao = VarreVetor(Campo)
LastPos = P
i = i + 1
P = InStr(LastPos + 1, sLine, "=", vbBinaryCompare)
'se posição menor do que 24 é porque encontrou este campo no vetor
If Posicao < 9 And Posicao > 0 Then
' A(Posicao) = Trim(Mid$(sLine, LastPos + 1, P - LastPos - 1))
A(Posicao) = Mid$(sLine, LastPos + 1)
ElseIf Posicao = 0 Then
' Grava a Posição do CDR
A(0) = Trim(Mid$(sLine, LastPos + 1, P - LastPos - 1))
End If
Loop
If i = 0 Then
A(i) = Mid$(sLine, LastPos + 1)
End If
End Sub
Option Compare Database
Public VetCamposRelevantes(0 To 8) As String
Public Sub CarregaCamposRelevates()
VetCamposRelevantes(0) = "07/OUT/10 QUI 10:00"
VetCamposRelevantes(1) = "LOCAL"
VetCamposRelevantes(2) = "INTRACENTRAL"
VetCamposRelevantes(3) = "OCUPADO (OG)"
VetCamposRelevantes(4) = "OCUPADO (IO)"
VetCamposRelevantes(5) = "SINAL A4/B4 RECEBIDO"
VetCamposRelevantes(6) = "ABANDONO DURANTE RGT (OG)"
VetCamposRelevantes(7) = "ABANDONO DURANTE RGT (IO)"
VetCamposRelevantes(8) = "NUMERO MUDADO"
End Sub
' retorna a posição para armazenar no Vetor
Public Function VarreVetor(strCampo As String) As Long
Dim i As Integer
VarreVetor = 9
For i = 0 To 8
If VetCamposRelevantes(i) = strCampo Then
VarreVetor = i
Exit Function
End If
Next i
End Function
Eu particularmente to achando que o erro ta la no ParsetoArray e na variável divisores.
Alguém pode me ajudar??
Agradeço