Sistema De Importação De Dados
#1
Posted 20/10/2010, 11:19
Tenho o seguinte arquivo de texto com 07 colunas com valores para importar para minha tabela com separação por limitação de texto.
Link para arquivo
O arquivo está no link acima. Como faço para separar esses dados e importar para minha tabela?
Uso MID, SPLIT?
No aguardo.
Obrigado.
#2
Posted 20/10/2010, 11:24
#3
Posted 20/10/2010, 13:11
É uma aplicação que eu estou desenvolvendo e o banco é MySql.Como as colunas são de tamanho fixo, o negócio é usar Mid. Se a importação não for parte do sistema, mas só uma coisa que você precise fazer agora, dependendo do banco, ele pode ter algum assistente de importação que poupe você do trabalho de escrever o código. O Access e o SQL Server eu sei que tem.
Como eu usaria MID? Eu não teria que usar um split e um array antes?
Abraços.
#4
Posted 20/10/2010, 15:26
Linha = Arquivo.ReadLine() Col1 = Mid(Linha,1,7) Col2 = Mid(Linha,8,5) Col3 = Mid(Linha,13,6)
#5
Posted 21/10/2010, 19:00
Vou explicar passo a passo o que estou fazendo para que possa verificar onde estou errando. O que eu teria que fazer aqui seria um array dento de outro array, porque primeiro preciso dividir as linhas e depois dividir os campos de cada linha. Segue abaixo meu código... o resultado vou postar como se meu arquivo de importação tivesse 3 linhas/registros.
importacao = request("importacao") importacao = replace(importacao," ","|") importacao = replace(importacao,"||||||||","|") importacao = replace(importacao,"|||||||","|") importacao = replace(importacao,"||||||","|") importacao = replace(importacao,"|||||","|") importacao = replace(importacao,"||||","|") importacao = replace(importacao,"|||","|") importacao = replace(importacao,"||","|") importacao = replace(importacao,chr(13),"<br>") importacao = split(importacao,"<br>") for each produto in importacao response.write produto&"<br>" next
RESULTADO
000001|4.2500|6.4000|1.650|1.950|2.550|-3.0000
000002|1.7000|2.4000|2.260|2.470|2.580|-3.0000
000003|0.5900|0.9000|8.600|9.440|10.780|3.0000
Até aí maravilha, consegui dividir as linhas. Agora preciso capturar os campos, do campo1 ao campo7, ou seja, criar um outro array dividindo pelo |
importacao = request("importacao") importacao = replace(importacao," ","|") importacao = replace(importacao,"||||||||","|") importacao = replace(importacao,"|||||||","|") importacao = replace(importacao,"||||||","|") importacao = replace(importacao,"|||||","|") importacao = replace(importacao,"||||","|") importacao = replace(importacao,"|||","|") importacao = replace(importacao,"||","|") importacao = replace(importacao,chr(13),"<br>") importacao = split(importacao,"<br>") for each produto in importacao campo = split(produto,"|") codigo = campo(0) preco1 = campo(1) next
ERRO
Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A0009)
Subscrito fora do intervalo: '[number: 1]'
/89embalagens.com.br/teste.asp, line 27
Onde a linha 27 é preco1 = campo(1)
Se eu deixo somente o campo(0) ele não dá erro e me retorna somente o primeiro campo de cada registro, mas do 1 em diante ele dá esse erro.
Alguém sabe o que pode ser?
Abraços e obrigado.
Resolvi da seguinte maneira
Set upl = Server.CreateObject("SoftArtisans.FileUp") upl.Path = "e:\vhosts\\httpdocs\__upl\" upl.Save arquivo="dados.txt" upl.form("Arquivo").SaveAs "e:\vhosts\\httpdocs\__upl\"&arquivo set confile = createObject("scripting.filesystemobject") set fich = confile.OpenTextFile(server.mappath("../__upl/dados.TXT")) conta=0 Do while not fich.AtEndOfStream conta=conta+1 Linha = fich.ReadLine() Linha = replace(Linha," ","|") Linha = replace(Linha,"||||||||","|") Linha = replace(Linha,"|||||||","|") Linha = replace(Linha,"||||||","|") Linha = replace(Linha,"|||||","|") Linha = replace(Linha,"||||","|") Linha = replace(Linha,"|||","|") Linha = replace(Linha,"||","|") arrayLinha = split(linha, "|", -1, 1) if ubound(arrayLinha)=6 then codigo = int(arrayLinha(0)) custo = replace(formatnumber(replace(arrayLinha(1),".",","),2),",",".") venda = replace(formatnumber(replace(arrayLinha(2),".",","),2),",",".") revenda = replace(formatnumber(replace(arrayLinha(3),".",","),2),",",".") promocional = replace(formatnumber(replace(arrayLinha(4),".",","),2),",",".") normal = replace(formatnumber(replace(arrayLinha(5),".",","),2),",",".") estoque = cdbl(replace(arrayLinha(6),".0000","")) sql = "update tab_produtos set valor='"&normal&"', valor_promocional='"&promocional&"', valor_custo'"&custo&"', valor_venda='"&venda&"', valor_revenda='"&revenda&"' where codigopadrao="&codigo&"" connect.execute(sql) 'response.write sql&"<br>" 'response.write codigo&"<br>" else if conta=1 then session("msg")= "<script language = javascript>alert('Erro!')</script>" response.redirect "?" end if end if loop fich.close() session("msg")= "<script language = javascript>alert('Valores atualizados com sucesso!')</script>" response.redirect "?"
Edição feita por: KBR, 21/10/2010, 19:01.
#6
Posted 21/10/2010, 19:55
Coluna1 = Mid(Linha,1,5) Coluna2 = Trim(Mid(Linha,6,14)) Coluna3 = Trim(Mid(Linha,20,14)) ...
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)