vilmarbr Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 Olá Pessoal,Então, eu tenho várias tabelas de banco de dados em formato texto que eu abro e varro os arquivos com estas funçõesda biblioteca do VB 6 VBA.FileSystem conforme abaixo.Eu gostaria de saber se tem alguma forma de pegar cada campo, sabendo a posição em que cada um começa, sem precisarusar funções de string (MID, InStr , etc...) ????Grato.'------------------------------------------------------------------------------------ If m_strArquivoLog = "" Then MsgBox "Favor escolher o arquivo de log para processamento", vbCritical, "Aviso" Call cmdAbrirLog_Click Exit Sub Else Open m_strArquivoLog For Input As #1 End If prgBarra.Value = 0 prgBarra.Min = 0 prgBarra.Max = 100 lngTotal = LOF(1) Do While Not EOF(1) DoEvents Line Input #1, vrtLinha If InStr(1, vrtLinha, "00000001", vbTextCompare) <> 1 And _ InStr(1, vrtLinha, "99999999", vbTextCompare) <> 1 Then txtResultado.Text = txtResultado.Text & vrtLinha & vbCrLf End If lngRegistrosLidos = lngRegistrosLidos + Len(vrtLinha & vbNewLine) prgBarra.Value = Format(lngRegistrosLidos * 100 / lngTotal, "###.#0") lblAviso.Caption = prgBarra.Value & "%" & vbNewLine & "Registros Lidos: " & _ lngRegistrosLidos & vbNewLine & "Total de Registros: " & lngTotal Loop datHoraFim = Format(Now, "hh:mm:ss") lblAviso.Caption = lblAviso.Caption & vbNewLine & "Início: " & datHoraInicio & " - Fim: " & datHoraFim Close #1'------------------------------------------------------------------------------------ Exemplo de dados de uma tabela:0000000277881591459000100 DE xxxxxx RIBUI RA DE VEICULOS LTDAZ000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000477881098869000105 aaaa RES L TDA T000000000000477881098869000105 aaaa RES L TDA T000000000000477881098869000105 aaaa RES L TDA T000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000277881591459000100 DE xxxxxx RIBUI RA DE VEICULOS LTDAZ000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000477881098869000105 aaaa RES L TDA T000000000000477881098869000105 aaaa RES L TDA T000000000000477881098869000105 aaaa RES L TDA T000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT000000000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 porque você não quer usar Mid()?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vilmarbr Postado Junho 9, 2009 Autor Denunciar Share Postado Junho 9, 2009 eu não queria usar MID para não ter que ficar comparando string, mas to vendo que não tem jeito mesmo pelo que estou pesquisando na web.acho que com MID vai ficar lento, mas se não tem jeito, vai de MID mesmo :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
vilmarbr
Olá Pessoal,
Então, eu tenho várias tabelas de banco de dados em formato texto que eu abro e varro os arquivos com estas funções
da biblioteca do VB 6 VBA.FileSystem conforme abaixo.
Eu gostaria de saber se tem alguma forma de pegar cada campo, sabendo a posição em que cada um começa, sem precisar
usar funções de string (MID, InStr , etc...) ????
Grato.
'------------------------------------------------------------------------------------
If m_strArquivoLog = "" Then
MsgBox "Favor escolher o arquivo de log para processamento", vbCritical, "Aviso"
Call cmdAbrirLog_Click
Exit Sub
Else
Open m_strArquivoLog For Input As #1
End If
prgBarra.Value = 0
prgBarra.Min = 0
prgBarra.Max = 100
lngTotal = LOF(1)
Do While Not EOF(1)
DoEvents
Line Input #1, vrtLinha
If InStr(1, vrtLinha, "00000001", vbTextCompare) <> 1 And _
InStr(1, vrtLinha, "99999999", vbTextCompare) <> 1 Then
txtResultado.Text = txtResultado.Text & vrtLinha & vbCrLf
End If
lngRegistrosLidos = lngRegistrosLidos + Len(vrtLinha & vbNewLine)
prgBarra.Value = Format(lngRegistrosLidos * 100 / lngTotal, "###.#0")
lblAviso.Caption = prgBarra.Value & "%" & vbNewLine & "Registros Lidos: " & _
lngRegistrosLidos & vbNewLine & "Total de Registros: " & lngTotal
Loop
datHoraFim = Format(Now, "hh:mm:ss")
lblAviso.Caption = lblAviso.Caption & vbNewLine & "Início: " & datHoraInicio & " - Fim: " & datHoraFim
Close #1
'------------------------------------------------------------------------------------
Exemplo de dados de uma tabela:
0000000277881591459000100 DE xxxxxx RIBUI RA DE VEICULOS LTDAZ00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000477881098869000105 aaaa RES L TDA T00000
0000000477881098869000105 aaaa RES L TDA T00000
0000000477881098869000105 aaaa RES L TDA T00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000277881591459000100 DE xxxxxx RIBUI RA DE VEICULOS LTDAZ00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000477881098869000105 aaaa RES L TDA T00000
0000000477881098869000105 aaaa RES L TDA T00000
0000000477881098869000105 aaaa RES L TDA T00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.