Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Batista

[Resolvido] Como lendo um arquivo TXT

Recommended Posts

Olá a todos,

 

Tenho um sistema off-line que gera um arquivo txt. Segue abaixo como é gerado o arquivo txt do sistema:

 

1500000012NOME DO SOCIO                                                                                       2234598626022019
1500000013NOME DO SOCIO                                                                                       6234598626022012
1500000014NOME DO SOCIO                                                                                       3234598626029015
1500000015NOME DO SOCIO                                                                                       1234398622025012
1500000016NOME DO SOCIO                                                                                       2224548626021012
1500000017NOME DO SOCIO                                                                                       2234598626023013
1500000018NOME DO SOCIO                                                                                       5234598626021112
1500000019NOME DO SOCIO                                                                                       3234598626022779

...

Ao todo cada linha tem 126 caracteres. Onde são separados da seguinte forma:

 

[b]Campo				Tamanho		Exemplo[/b]
-----------------------------------------------------------
constante da empresa 	  	  2N		"15"
ação do sócio 		  	  6N 		"000000"
código da dependência 	  	  2N		"00"
nome do sócio/dependente  	100C		
data de nascimento 		  8D		"ddmmaaaa"
data de admissão		  8D		"ddmmaaaa"
[i]*n = Número / *c = caracter[/i]

 

Com este código, consigo separar uma única linha:

 

<%
varArquivo = "1500000012NOME DO SOCIO                                                                                       2234598626022019"

a = Left(varArquivo,2)
		Response.Write("Constante da Empresa: <b>"&a&"</b>")
b = Replace(Left(varArquivo,8),a, "")
		b = Left(b,6)
		Response.Write("<br />Ação do Sócio: <b>"&b&"</b>")
c = Replace(Left(varArquivo,10),a+b,"")
		c = Left(c,2)
		Response.Write("<br />Código da Dependência: <b>"&c&"</b>")
d = Replace(Left(varArquivo,110),a+b+c,"")
		d = Left(d,100)
		Response.Write("<br />Nome do Sócio: <b>"&d&"</b>")
e = Replace(Left(varArquivo,118),a+b+c+d,"")
		e = Left(e,8)
		Response.Write("<br />Data de Nascimento: <b>"&e&"</b>")
f = Replace(Left(varArquivo,126),a+b+c+d+e,"")
		f = Left(f,8)
		Response.Write("<br />Data de Adimissão: <b>"&f&"</b>")

Response.Write("<br /><br />SÓCIO <b>"&d&"</b> SEPARADO COM SUCESSO!")
End If
%>

 

O meu problema é que o arquivo txt existem muitas linhas. Preciso fazer o upload do arquivo (script pronto) e depois separar cada linha e coloca-la no banco de dados separadamente.

 

Alguém pode me ajudar!

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode colocar um loop para ler as linha e ir armazenando os valores lidos em variaveis que serão depois usadas no insert tudo isso dentro do loop.

 

Set str_fso = objeto.OpenTextFile(str_caminho,ForReading,False)
a = Left(varArquivo,2)
                       Response.Write("Constante da Empresa: <b>"&a&"</b>")
       b = Replace(Left(varArquivo,8),a, "")
                       b = Left(b,6)
                       Response.Write("<br />Ação do Sócio: <b>"&b&"</b>")
       c = Replace(Left(varArquivo,10),a+b,"")
                       c = Left(c,2)
                       Response.Write("<br />Código da Dependência: <b>"&c&"</b>")
       d = Replace(Left(varArquivo,110),a+b+c,"")
                       d = Left(d,100)
                       Response.Write("<br />Nome do Sócio: <b>"&d&"</b>")
       e = Replace(Left(varArquivo,118),a+b+c+d,"")
                       e = Left(e,8)
                       Response.Write("<br />Data de Nascimento: <b>"&e&"</b>")
       f = Replace(Left(varArquivo,126),a+b+c+d+e,"")
                       f = Left(f,8)
                       Response.Write("<br />Data de Adimissão: <b>"&f&"</b>")

       Response.Write("<br /><br />SÓCIO <b>"&d&"</b> SEPARADO COM SUCESSO!")

While (not str_fso.AtEndOfStream)
var1 = ""
var2 = ""
var3 = ""
var1 = a
var2 = b
var3 = c
....
sql = "Insert into tabela (campo1,campo2,campo3,...) values ('"&var1&","&var2&","&var3&",..."
loop

 

Fiz o codigo correndo, então é provavel que não funcione direito,mas acho que deu para pegar a ideia

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um exemplo que coloquei no lab. de script, que lê um arq. txt, pegando apenas uma linha (readline) usando o split para pegar informações que , armazena em uma variavel e depois dá um INSERT no BD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim, porém está dando o seguinte erro:

[b]Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method

/prot21/caicaras/areaTeste/contador02.asp, line 51 [/b]

 

	Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim varArquivo
Set varArquivo = objFSO.OpenTextFile(server.MapPath("arquivo.txt"), 1)

Dim arrayLinha
Do while not varArquivo.AtEndOfStream

	a = Left(varArquivo,2)
			Response.Write("Constante da Empresa: <b>"&a&"</b>")
	b = Replace(Left(varArquivo,8),a, "")
			b = Left(b,6)
			Response.Write("<br />Ação do Sócio: <b>"&b&"</b>")
	c = Replace(Left(varArquivo,10),a+b,"")
			c = Left(c,2)
			Response.Write("<br />Código da Dependência: <b>"&c&"</b>")
	d = Replace(Left(varArquivo,110),a+b+c,"")
			d = Left(d,100)
			Response.Write("<br />Nome do Sócio: <b>"&d&"</b>")
	e = Replace(Left(varArquivo,118),a+b+c+d,"")
			e = Left(e,8)
			Response.Write("<br />Data de Nascimento: <b>"&e&"</b>")
	f = Replace(Left(varArquivo,126),a+b+c+d+e,"")
			f = Left(f,8)
			Response.Write("<br />Data de Adimissão: <b>"&f&"</b>")

	Response.Write("<br /><br />SÓCIO <b>"&d&"</b> ADICIONADO COM SUCESSO!")

	arrayLinha=split(varArquivo.ReadLine,"/n",-1,1)

Loop

varArquivo.Close
Set varArquivo = Nothing
Set objFSO = Nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou, Showwwww!

Veja como eu fiz:

 

<%
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim varArquivo
Set varArquivo = objFSO.OpenTextFile(server.MapPath("arquivo.txt"), 1)

Dim arrayLinha
Do while not varArquivo.AtEndOfStream

	arrayLinha=split(varArquivo.ReadLine,"/n",-1,1)

	a = Left(arrayLinha(0),2)
			Response.Write("Constante da Empresa: <b>"&a&"</b>")
	b = Replace(Left(arrayLinha(0),8),a, "")
			b = Left(b,6)
			Response.Write("<br />Ação do Sócio: <b>"&b&"</b>")
	c = Replace(Left(arrayLinha(0),10),a+b,"")
			c = Left(c,2)
			Response.Write("<br />Código da Dependência: <b>"&c&"</b>")
	d = Replace(Left(arrayLinha(0),110),a+b+c,"")
			d = Left(d,100)
			Response.Write("<br />Nome do Sócio: <b>"&d&"</b>")
	e = Replace(Left(arrayLinha(0),118),a+b+c+d,"")
			e = Left(e,8)
			Response.Write("<br />Data de Nascimento: <b>"&e&"</b>")
	f = Replace(Left(arrayLinha(0),126),a+b+c+d+e,"")
			f = Left(f,8)
			Response.Write("<br />Data de Adimissão: <b>"&f&"</b>")

	Response.Write("<br /><br />SÓCIO <b>"&d&"</b> ADICIONADO COM SUCESSO!<br /><br />")

Loop

varArquivo.Close
Set varArquivo = Nothing
Set objFSO = Nothing
%>

 

 

Inserir no Banco de Dados agora é fácil.

 

Obrigado pessoal!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, novo e pequeno problema detectado!

 

Seguindo o código que utilizei acima, estou inserindo no banco de dados agora, normalmente. Porém o arquivo do meu cliente gera sempre o mesmo arquivo e acrescenta no final os sócios mais novos. Então, o arquivo nunca é menor que o último criado. Ele está sempre crescendo. Por exemplo:

 

Hoje ele gera o arquivo assim:

1500000012NOME DO SOCIO 2234598626022019

1500000013NOME DO SOCIO 6234598626022012

1500000014NOME DO SOCIO 3234598626029015

 

 

Na próxima semana ele gera o arquivo assim:

1500000012NOME DO SOCIO 2234598626022019

1500000013NOME DO SOCIO 6234598626022012

1500000014NOME DO SOCIO 3234598626029015

1500000015NOME DO SOCIO 1234398622025012

1500000016NOME DO SOCIO 2224548626021012

1500000017NOME DO SOCIO 2234598626023013

1500000018NOME DO SOCIO 5234598626021112

 

 

Repare que os 3 primeiros sócios são iguais. Então quando eu jogo no sistema, ele cadastra no banco de dados os dados repetidos. Como faria para bloquear e não deixar ele cadastrar novamente o mesmo sócio?

 

Obrigado!!

 

 

 

Que bom que resolveu !!

 

Precisando, estamos ai :joia:

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.