Ir para conteúdo

POWERED BY:

Arquivado

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

clayton-mer

pegar arquivo txt automático

Recommended Posts

boa tarde turma do imasters estou com seguinte problema preciso importar dados de arquivo txt que é enviado por um sistema que fica na máquina do cliente que envia via ftp. o problema não está em importar, é o seguinte.

 

com esse código eu consigo abrir o txt

 

Dim fso, f1

Set fso = CreateObject("Scripting.FileSystemObject")

Set f1 = fso.GetFile("c:\test.txt")

 

mais o problema é tipo com o código assim eu consigo abrir o arquivo text.txt, mais o sistema do meu cliente cada hora que envia um arquivo para o servidor ele vem com um nome diferente, então como fazer para o sistema abrir o arquivo txt que foi envio. para facilitar estou pensando do seguinte forma após abrir o arquivo e importar os dados para o meu banco vou mudar o nome do arquivo tipo text.bbb, para ficar sempre somente 1 arquivo txt na pasta.

 

mais como fazer para au inves de colocar o nome do arquivo no código para abrir o arquivo, ele ficar varrendo a pasta e verificar se tem um arquivo txt lá não importa o nome e fazer a importação.

 

aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com o FSO você pode fazer o seguinte:

 

Como você não sabe o nome do arquivo enviado, você precisa de alguma referência para pegar o mesmo, que tal a data de modificação?

Bom, primeiro liste o conteúdo da pasta onde estão salvos os arquivos por ordem de data;

Liste somente os arquivos .TXT e selecione o arquivo mais atual (data de modificação - será o último arquivo enviado);

Abra o arquivo e faça o processo de gravação no banco;

Confirme se gravou;

Delete o arquivo da pasta;

 

Bom, é uma sugestão...

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo acho que a lógica que o Public2004 tem fundamento acho que vai funcionar da forma que ele me disse no seu post mais como colocar isso em pratica, qual comando devo usar para litar o conteudo da pasta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos lá,

A pasta onde será enviado o arquivo é específica para isso?

Há outro tipo de arquivo na pasta, ou somente os TXT?

Você já tem uma rotina de upload pronta que será integrada com esse sistema, ou o cliente envia via FTP? - nesse caso como você vai saber quando o arquivo foi enviado para executar a rotina?

 

A partir das respostas posso te sugerir algo melhor.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos lá,

A pasta onde será enviado o arquivo é específica para isso?

Há outro tipo de arquivo na pasta, ou somente os TXT?

Você já tem uma rotina de upload pronta que será integrada com esse sistema, ou o cliente envia via FTP? - nesse caso como você vai saber quando o arquivo foi enviado para executar a rotina?

 

A partir das respostas posso te sugerir algo melhor.

 

Abs.

Bom dia, o arquivo txt é envio pelo sistema dele atraves de ftp, sozinho ele envio todos os dias das 23:00 as 00:00 de cada dia, isso está ok. Eu fiz um agendamento de tarefas em meu servidor, que é das 01:00 as 02:00 de cada dia ele importa os dados do txt isso é automática não precisa clicar em nada, está funcionando. o problema é só em pegar o nome do arquivo porque cada arquivo que o sistema dele gera vem com um nome.

 

na verdade estou querendo mudar o nome do arquivo após ter importados os dados com sucesso, para ter somente um arquivo txt na pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tem um resumo aqui do que você precisa...

<%
'Criando os objetos
Set objFSO = Server.CreateObject ("Scripting.FileSystemObject")
Local = Server.Mappath("sua_pasta/")
Set objPasta = objFSO.GetFolder (Local)
Set objRs = Server.CreateObject ("ADODB.RecordSet")

objRs.Fields.Append "nome", 200, 255
objRs.Fields.Append "data", 7
objRs.Fields.Append "type", 200, 255
objRs.Open

For Each Arquivo In objPasta.Files
	objRs.AddNew
	objRs.Fields("nome").Value = Arquivo.Name
	objRs.Fields("data").Value = Arquivo.DateLastModified
	objRs.Fields("type").Value = Arquivo.Type
Next

objRs.Sort = "data desc" 'Colocando em ordem de data os arquivos encontrados

objRs.MoveFirst 'Indo para o primeiro arquivo

'Como você só vai ter arquivos TXT na pasta, é só armazenar o nome do primeiro registro em uma variável
varFileName = objRs.Fields("nome")

'============================================
'Agora efetue a leitura do arquivo e gravação no banco de dados
'============================================

'Feito a leitura e gravação, falta agora renomear o arquivo...
'No exemplo abaixo, estou definindo o nome com a data atual (sem os parenteses)
strData = Date()
strData = Replace(strData,"/","")
strFileNameNew = strData &".txt"

'Renomeando o arquivo
objFSo.MoveFile Local&"\"&varFileName, Local&"\"&strFileNameNew ' O arquivo processado ficará na pasta assim: 782008.txt

'Fechando e destruindo os objetos
objRs.Close
Set objRs = Nothing
Set objPasta = Nothing
Set objFSO = Nothing
%>

Levei em consideração que sem exceção todos os dias o seu cliente enviará um arquivo ao servidor.

Espero que ajude...

 

Abs.

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.