AJUDA IMPORTACAO DE ARQUIVOS TEXTO
tenho uma funçãozinha que le quantos registros tem num txt, por um delimitador [Ô] | [Ô] no caso...
esta importando normalmente, mas o que gostaria era fazer ficar mais bunitinho o programa,
código que tenho:
Citação:
Private Sub Command2_Click()
On Error GoTo ErrorMsg
Dim fs As New FileSystemObject
Dim fsStream As TextStream
Dim oRsNome
Dim iContador
Dim iContadors As Long
Dim sCodigo_cliente
Set fsStream = fs.OpenTextFile(txtArquivo.Text)
Dim line As Variant
Dim NovoValor00 As Variant
Dim NovoValor01 As Variant
Dim NovoValor02 As Variant
Dim NovoValor03 As Variant
Dim NovoValor04 As Variant
Dim NovoValor05 As Variant
Dim NovoValor06 As Variant
Dim NovoValor07 As Variant
Dim NovoValor08 As Variant
Dim NovoValor09 As Variant
Dim NovoValor10 As Variant
Dim NovoValor11 As Variant
Dim NovoValor12 As Variant
Dim NovoValor13 As Variant
Dim NovoValor14 As Variant
Dim fname As String
Dim num_lines As Long
fname = txtArquivo.Text
num_lines = LinesInFile(fname)
con.Execute [Ô]truncate table Tabela_Clientes[Ô]
Do While fsStream.AtEndOfStream = False
line = Split(fsStream.ReadLine, [Ô]|[Ô])
NovoValor00 = Replace(line(0), [Ô][ô][Ô], [Ô] [Ô])
NovoValor01 = Replace(line(1), [Ô][ô][Ô], [Ô] [Ô])
NovoValor02 = Replace(line(2), [Ô][ô][Ô], [Ô] [Ô])
NovoValor03 = Replace(line(3), [Ô][ô][Ô], [Ô] [Ô])
NovoValor04 = Replace(line(4), [Ô][ô][Ô], [Ô] [Ô])
NovoValor05 = Replace(line(5), [Ô][ô][Ô], [Ô] [Ô])
NovoValor06 = Replace(line(6), [Ô][ô][Ô], [Ô] [Ô])
NovoValor07 = Replace(line(7), [Ô][ô][Ô], [Ô] [Ô])
NovoValor08 = Replace(line(8), [Ô][ô][Ô], [Ô] [Ô])
NovoValor09 = Replace(line(9), [Ô][ô][Ô], [Ô] [Ô])
NovoValor10 = Replace(line(10), [Ô][ô][Ô], [Ô] [Ô])
NovoValor11 = Replace(line(11), [Ô][ô][Ô], [Ô] [Ô])
NovoValor12 = Replace(line(12), [Ô][ô][Ô], [Ô] [Ô])
NovoValor13 = Replace(line(13), [Ô][ô][Ô], [Ô] [Ô])
NovoValor14 = Replace(line(14), [Ô][ô][Ô], [Ô] [Ô])
con.Execute [Ô]INSERT INTO Tabela_Clientes(Col001, Col002, Col003, Col004, Col005, Col006, Col007, Col008, Col009, Col010, Col011, Col012, Col013, Col014,Col015) VALUES ([ô][Ô] & NovoValor00 & [Ô][ô],[ô][Ô] & NovoValor01 & [Ô][ô],[ô][Ô] & NovoValor02 & [Ô][ô],[ô][Ô] & NovoValor03 & [Ô][ô],[ô][Ô] & NovoValor04 & [Ô][ô],[ô][Ô] & NovoValor05 & [Ô][ô],[ô][Ô] & NovoValor06 & [Ô][ô],[ô][Ô] & NovoValor07 & [Ô][ô],[ô][Ô] & NovoValor08 & [Ô][ô],[ô][Ô] & NovoValor09 & [Ô][ô],[ô][Ô] & NovoValor10 & [Ô][ô],[ô][Ô] & NovoValor11 & [Ô][ô],[ô][Ô] & NovoValor12 & [Ô][ô],[ô][Ô] & NovoValor13 & [Ô][ô],[ô][Ô] & NovoValor14 & [Ô][ô])[Ô]
sCodigo_cliente = oRsNome
progressBar.Caption = [Ô]Importando [Ô] & iContador & [Ô] clientes de [Ô] & Format$(num_lines)
iContador = iContador + 1
Loop
If iContador <> Format$(num_lines) Then
MsgBox [Ô]Ocorreu um erro durante a carga e alguns registros não foram inseridos![Ô]
Else
con.Execute [Ô]EXEC P_CEMAR_CLIENTE[Ô]
progressBar.Caption = [Ô]Clientes Importados[Ô]
End If
Set con = Nothing
Set fs = Nothing
Set fsStream = Nothing
ErrorMsg:
If Err.Number = [Ô]-2147217900[Ô] Then
MsgBox [Ô]Falha, arquivo possui caracteres especiais. [Ô], vbCritical + vbOKOnly, [Ô]Erro[Ô]
End If
If txtArquivo = [Ô][Ô] Then
MsgBox [Ô]Por favor selecione o arquivo a ser importado.[Ô], vbOKOnly, [Ô]Atenção[Ô]
End If
End Sub
ok, o principal objetivo do meu post é o seguinte, nessa linha:
Citação:progressBar.Caption = [Ô]Importando [Ô] & iContador & [Ô] clientes de [Ô] & Format$(num_lines)
iContador = iContador + 1
esta dentro de um loop, e no programa ela mostra + - assim:
Importando XXX clientes de YYY
onde XXX é o status do loop, e YYY é o total de linhas que possui o TXT...
só que dessa forma, fica muito inviavel fazer, ja que trabalha com loop, e se tiver muitos processos executando simultaneamente, nao aparecem os status..
gostaria de otimizar isso, de qualquer forma, nem que seja uma progressbar ou algo do tipo....
é isso, por favor aguardo respostas, ou dicas
nunca me decepcionei com o forum e creio nao ser dessa vez *--*
OBS: nao estou pedindo o codigo, apenas uma ajuda de como faze-lo ou uma dica de como mostrar pro usuario do programa, que os clientes estão sendo importados, pois temos aqui na empresa arquivos com muitas linhas, 50000, 100000 e se nao mostrar o que está ocorrendo capaz do usuario parar o processo... por isso queria, conforme fosse adicionando linha por linha, o programa mostrasse a linha que foi adicionada, desse modo [Ô]TRAVANDO[Ô] caso uma delas nao seja importada
Obrigado e Abraços!
.....
iContador = iContador + 1
Doevents
Loop
pois o comando Doevents permite o refresh da tela.
muito obrigado pela resposta, vou fazer os testes e reporto aqui
=)
EDIT-----------------------------------------
Agredecendo, pois o DoEvents funcionou perfeitamente =)
obrigado mais uma vez comunidade VBMANIA e a você VBSHAR
Abraços