Jump to content


Photo

Sistema De Importação De Dados


  • Faça o login para participar
5 replies to this topic

#1 KBR

KBR

    kl3b3r

  • Usuários
  • 392 posts
  • Sexo:Não informado
  • Localidade:Mauá - SP
  • Interesses:ASP // DESENVOLVIMENTO WEB // MYSQL // ACCESS // FLASH // FIREWORKS // DREAMWEAVER // REDES

Posted 20/10/2010, 11:19

Galera,

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 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 20/10/2010, 11:24

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.

#3 KBR

KBR

    kl3b3r

  • Usuários
  • 392 posts
  • Sexo:Não informado
  • Localidade:Mauá - SP
  • Interesses:ASP // DESENVOLVIMENTO WEB // MYSQL // ACCESS // FLASH // FIREWORKS // DREAMWEAVER // REDES

Posted 20/10/2010, 13:11

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.

É uma aplicação que eu estou desenvolvendo e o banco é MySql.

Como eu usaria MID? Eu não teria que usar um split e um array antes?

Abraços.

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 20/10/2010, 15:26

Lê linha por linha com o FSO. Aí, você sabe que a coluna x começa na posição tal e tem tantos caracteres.

Linha = Arquivo.ReadLine()
Col1 = Mid(Linha,1,7)
Col2 = Mid(Linha,8,5)
Col3 = Mid(Linha,13,6)


#5 KBR

KBR

    kl3b3r

  • Usuários
  • 392 posts
  • Sexo:Não informado
  • Localidade:Mauá - SP
  • Interesses:ASP // DESENVOLVIMENTO WEB // MYSQL // ACCESS // FLASH // FIREWORKS // DREAMWEAVER // REDES

Posted 21/10/2010, 19:00

Ainda não deu certo.

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 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 21/10/2010, 19:55

Você complicou com esse replace. Usando o txt do link como base, era só usar o Mid como eu falei.

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)

IPB Skin By Virteq