Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

3rsolutions

iMPORTAR ARQUIVO TEXTO

Recommended Posts

Olá galera, seguinte, tenho que importar um arquivo texto onde os dados são delimitados por vírgula, e enviá-los para um bd access, peguei um exemplo pela net porém estou tendo dificuldades devido a um erro de que nã oencontra o objeto (tabela no access onde será gravada a importação) , segue abaixo a codificação que estou usando para solucionar meu problema, caso alguém tenha algo melhor e mais simples agradeço... abraços.Linha onde localizei o problema sSQL = "SELECT * INTO " & txtTabela & " IN '" & txtPath.Text & "\" & sArqMDB & "' FROM " & Left(txtArquivo.Text, Len(txtArquivo.Text) - 4) & ";"DB.Execute sSQL

Private Sub cmdImport_Click()Dim DB As DatabaseDim sArqDBF As StringDim sArqMDB As StringDim sSQL As StringDim HoraIni As DateDim HoraFin As Date'Importa o TXT para DBFOn Error GoTo ERROHoraIni = Time'Ver se o arquivo está na pastaIf Dir(App.Path & "\import.exe") = "" Or Dir(App.Path & "\VFP6R.DLL") = "" Or Dir(App.Path & "\VFP6RENU.DLL") = "" Or Dir(App.Path & "\VFP6RUN.EXE") = "" Then    MsgBox "O programa de importação 'import.exe' não está na mesma pasta que este programa!" & Chr(13) & Chr(13) & "Verifique se os arquivos abaixo estão na mesma pasta:" & Chr(13) & "VFP6R.DLL" & Chr(13) & "VFP6RENU.DLL" & Chr(13) & "VFP6RUN.EXE" & Chr(13) & "import.EXE", vbExclamation, "AVISO"    Exit SubEnd If'Executa o programa Import.EXE com os devidos parâmetrossRet = Shell(App.Path & "\import.exe " & txtPath & " " & txtArquivo & " " & txtDeli & " " & txtEstru, vbHide)'Registra o tempo de processamento do DBFHoraFin = TimelblMens.Caption = "Tempo de Processamento: TXT->DBF: " & Format((HoraFin - HoraIni), "hh:mm:ss")sArqDBF = Left(txtArquivo.Text, Len(txtArquivo.Text) - 3) & "dbf"sArqMDB = txtMDB'Cria um novo banco de dados e apaga se já existir. Para efeito de demonstraçãoIf Dir(txtPath.Text & "\" & sArqMDB) <> "" Then Kill txtPath.Text & "\" & sArqMDBSet DB = CreateDatabase(txtPath.Text & "\" & sArqMDB, dbLangGeneral, dbEncrypt)DB.Close'Inclui no MDB o arquivo DBFHoraIni = TimeSet DB = OpenDatabase(txtPath.Text & "\" & txtMDB.Text, False, False, "DBase IV")'sSQL = "SELECT lixo.CAMPO1, lixo.CAMPO2, lixo.CAMPO3, lixo.CAMPO4, lixo.CAMPO5, lixo.CAMPO6, lixo.CAMPO7 INTO LIXO  IN 'd:\fox\lixo.mdb' FROM lixo;"sSQL = "SELECT * INTO " & txtTabela & " IN '" & txtPath.Text & "\" & sArqMDB & "' FROM " & Left(txtArquivo.Text, Len(txtArquivo.Text) - 4) & ";"DB.Execute sSQL'Registra o tempo de processamento do MDBHoraFin = TimelblMens.Caption = lblMens.Caption & " | DBF->MDB: " & Format((HoraFin - HoraIni), "hh:mm:ss") & " - Reg: " & DB.RecordsAffected'Fecha o BDDB.CloseBeepMsgBox "Pronto !!!", vbInformation, "AVISO"Exit SubERRO:    MsgBox Err.Description, Err.Number, "ERRO"    On Error GoTo 0End SubPrivate Sub cmdSair_Click()EndEnd SubPrivate Sub Form_Load()'Exemplo do arquivo LIXO.TXT'txtPath.Text = App.Path'txtArquivo.Text = "lixo.txt"'txtDeli.Text = ";"'txtEstru.Text = "C010N015N010N008D010D010D010"''txtMDB.Text = "lixo.MDB"'txtTabela.Text = "lixo"'Exemplo do arquivo TESTE.TXTtxtPath.Text = App.PathtxtArquivo.Text = "teste.csv"txtDeli.Text = ";"txtEstru.Text = "N010C010N010D010C050N007"'txtEstru.Text = "N010N015N010N003C050N005N006C050C050C050C029C002C009C007C020C050C005C004C014D010"txtMDB.Text = "teste.MDB"txtTabela.Text = "teste"End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisa realmente de um programa para isso? Não é mais fácil importar diretamente pelo Acess, ou não pode ser dessa maneira??

Preciso para implementar no sistema, não vou ficar fazendo pessoas leigas mexer no banco de dados a todo momento que precisar fazer isto né ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.