image
Inicio » Foros » ASP

ASP

Leer un txt e insertar info en BD

Volver al foro | Tema cerrado | Añadir nuevo tema


De: ALEX
Fecha: 05/11/2005
Mensaje:

HOLA COMO ESTAN ESPERO QUE BIEN TENGO UN GRAVE PROBLEMA NO SE COMO LEER INFORMACION PASO POR PASO DE UN TXT PARA MANDARLO A UNA BASE DE DATOS CON ASP EL ARCHIVO TXT TIENE EL SIGUIENTE FORMATO

 280804 1736 0017      01030   0445521704004 3   56213
 280804 1748 0003      01545        56934345 3   56213
 280804 1750 0004      01545        54288763 3   56213
 280804 1750 0002      01545        54288763 3   56213
 280804 1819 0011      01645        56755417 3   12183
 280804 1834 0033      01642   0445512600991 3   56213

LO LEO CON ESTE CODIGO PERO NO PUEDO LEER NUMERO POR NUMERO PARA PASARLO A UNA BASE DE DATOS

<%
nombre_archivo = "mi_archivo.txt"

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set archivo = fs.OpenTextFile(Server.MapPath(nombre_archivo), 1)

do while not archivo.AtEndOfStream
    Response.Write(archivo.ReadLine)
loop

archivo.Close
Set archivo = Nothing
Set fs = Nothing
%>

POR FAVOR ALGUNA IDEA?

 




Quizás le interese
De: Pablo Manuel
Util para: 29 personas

Fecha: 05/11/2005
Mensaje:

lo que quieres es sencillo, ya casi lo tienes. cada linea tienes que meterla en una variable e ir sacando por trozos la información. todas las lineas deben ser iguales (me refiero al espaciado). si quieres mandamé un correo y te digo las funciones que necesitas. saludos.



De: juanjose
Util para: 2 personas

Fecha: 16/11/2005
Mensaje:

a ver si esto te funciona

en mi ejemplo tengo mi base de datos que se llama "controlsat.dbm"

mi tabla dentro de la base se llama "encabezado"

y los campos dentro de mi tabla se llaman "nofactura" y "cliente"

con esto cargas el archivo a la base de datos.  PARA ESTO debes previamente llamar a la funcion al momento de pulsar el boton.

<html>

<body>

...............

if request.form("Enviar")<> "" then
  if request.form("NOMBREARCHIVO")<>"" then
      x=aplica_altaenca()  --->    este es el nombre de la funcion
  Else
  x=aviso("No existe archivo",x,x,x)
End If
else


............

<td NOMBREARCHIVO</td> <input type="File" name="NOMBREARCHIVO"  size="60" MAXLENGTH="60"></td>

<td><input type="submit" value="ENVIAR" name="Enviar" style="float: right"> </td>

<%end if%>

</body>

</html>

<%
'CARGAR UN TXT A BD

Function aplica_altaenca()
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Set DataConn1 =Server.CreateObject ("ADODB.Connection")
set rs1=Server.CreateoBJECT("ADODB.recordset")
Set fs = CreateObject("Scripting.FileSystemObject")
filename=server.mappath("/formatos/factura.txt") aqui va la ruta del archivo que quieres cargar
Set readfile=fs.OpenTextFile(filename,1,False)
Set fs = CreateObject("Scripting.FileSystemObject")
DataConn1.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/cgi-bin/controlsat.mdb")) aqui va la ruta de donde se encuentra tu base de datos
rs1.CursorType = adOpenKeyset
rs1.LockType = adLockOptimistic
sqltxt="SELECT * FROM encabezado" este es el nombre de la tabla en donde se va cargar el archivo dentro de la base de datos.
rs1.open sqltxt,DataConn1

Do while not readfile.atendofstream
    on error resume next
    Text=readfile.readline

aqui empiezas a leer linea por linea, dependiendo de como esté estructurado tu archivo vas leyendo la linea.

'NUMERO DE FACTURA


     Text=readfile.skipline salta una linea
     Text=readfile.skipline
     Text=readfile.skipline
'    Text=readfile.skip(74) salta "n" numero de caracteres
     Text=readfile.readline lee la linea en donde quedo el cursor, en este caso es en la linea #4 en el caracter #75
     factura=mid(Text,74,8) extrae solo los datos que se encuantran despues del caracter #75, en este caso va a extraer 8 caracteres despes del caracter #74


para leer otro dato solo haces lo mismo, "saltando lineas y caracteres hasta que llegues al dato deseado", lo unico que cambia es el nombre de la variable "TEXT" y "FACTURA" la cambias por otro nombre, en este caso la cambié por "TEXT1" y "FACTURA1"

'NOMBRE DE CLIENTE
     Text1=readfile.skipline
     Text1=readfile.skipline
     Text1=readfile.skipline
     Text1=readfile.readline
     factura1=mid(Text1,15,20)

     rs1.addnew --> Aqui guardas los datos en el campo dentro de la tabla dentro de base de datos


rs1("nofactura")//este es  nombre del campo  =factura
rs1("cliente") //este es otro campo                  =factura1

rs1.update
count=count+1

loop

readfile.close
set readfile=nothing
set fs=nothing
rs1.close
set rs1=nothing
DataConn1.Close
Set DataConn1 = Nothing

response.write "<center><b>" & Count & " linea(s) fueron cargada(s)</b></center>"
end function
%>

 





De: juanjose
Util para: 0 personas

Fecha: 16/11/2005
Mensaje:

En el ejemplo anterior se guarda tu archivo TXT por partes. Osea, cada dato desfrgmentado de tu archivo se guarda en en campo dentro de tu base. Asi puede ser ordenado cada dato del TXT en un campo especifico.

Ahora si lo que quieres es que tu archivo TXT se guarde exactamente igual en un campo  de tu tabla dentro de tu base de datos, entonces haz lo sig.

solo cambia la funcion anterior por esta:

<%
'CARGAR UN TXT A BD

Function aplica_altaenca()
Dim objFSO
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Set DataConn1 =Server.CreateObject ("ADODB.Connection")
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
set rs1=Server.CreateoBJECT("ADODB.recordset")
Set fs = CreateObject("Scripting.FileSystemObject")
filename=server.mappath("/formatos/factura.txt")
Set readfile=fs.OpenTextFile(filename,1,False)
Set fs = CreateObject("Scripting.FileSystemObject")
DataConn1.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/cgi-bin/controlsat.mdb"))
rs1.CursorType = adOpenKeyset
rs1.LockType = adLockOptimistic


Do while not readfile.atendofstream
    on error resume next
    Text=readfile.readline
    MemberInfo = split(Text, "", 3)
 sqltxt="SELECT * FROM encabezado"
 rs1.open sqltxt,DataConn1


rs1.addnew

rs1("factura")     =MemberInfo(0) aqui se va a guardar tu archivo completo
rs1("cliente")          =count+1 aqui se va a guardar el consecutivo de numero de linea

rs1.update
count=count+1

loop
readfile.close
set readfile=nothing
set fs=nothing
rs1.close
set rs1=nothing
DataConn1.Close
Set DataConn1 = Nothing

response.write "<center><b>" & Count & " linea(s) fueron cargada(s)</b></center>"

end function
%>

 

 

SALUDOS, ESPERO HALLAS ENTENDIDO Y TE FUNCIONE






De: ALEX
Util para: 2 personas

Fecha: 02/12/2005
Mensaje:

Hola juan José muchas gracias por la ayuda  mira ya lo cheque y no me funciono por que no entiendo de donde sale la funcion "aplica_altaenca()" y no se como funciona ademas no se como mandarla llamar,  Estudie tu codigo y lo puse a prueva no me mando error pero no puede leer el archivo mira lo que estoy tratando de hacer es de un archivo txt que es generado por un conmutador en este salen 7 columnas de numeros por ejemplo

1 FECHA, 2 HORA, 3 DURACION, 4 ORIGEN, 5 DESTINO, 6 PERMISO Y 7 CLAVE

EL FORMATO DEL TXT ESTA COMO SIGUE LO PUSE NUMERADOS PARA QUE VEAS CUANTAS COLUMNAS SON

   1           2       3              4                    5      6       7

050804 1428 0010      01297        51285000 2   18113

ASI ESTAN EN LA BASE DE DATOS LOS CAMPOS

Y EN EL TXT SALEN SOLO LAS 7 COLUMNAS NE NUMEROS Y CADA COLUMNA CORRESPONDE A CADA CAMPO EN LA BASE DE DATOS LO QUE QUIERO ES PASAR CON ASP LOS DATOS DEL TXT A LA BASE DE DATOS EN ACCES NO LO HE PODIDO HACER Y YA ES UN DOLOR DE CABEZA

ALGUNA IDEA O COMO PODRIA MODIFICAR TU CODIGO PARA QUE LO PUEDA HACER POR LINEAS ER ARCHIVO TRAE MUCHISIMAS LINEAS POR ESTO TENGO TANTOS PROBLEMAS

 





De: Araceli
Util para: 0 personas

Fecha: 07/12/2005
Mensaje:

Hola,

Necesito que mis usuarios que no saben nada de sistemas, hagan una consulta a la bd por medio de una página web, pero necesitan consultar varios productos a la vez y no pueden capturar uno por uno, por eso necesito que carguen su información por medio de un archivo txt y así realizar su consulta, me pueden dar una idea por favor, mi base esta en sql server

 

 





De: Sergio
Util para: 1 personas

Fecha: 28/01/2006
Mensaje:

Hola, con este codigo separas la información, espero que sepas introducirla a la BD, ya que solo faltaría eso

Tienes que cuidar que la Variable Valor tenga mas valor que el numero total de lineas de tu TXT

<%
NomAarchivo = "test.txt"
Valor = 100
ReDim valDatos(Valor)
Set fso2 = Server.CreateObject("Scripting.FileSystemObject")
Set archivo = fso2.OpenTextFile(Server.MapPath(NomAarchivo), 1)
i=1
cont = 1
Do While Not archivo.AtEndOfStream
valDatos(i)= archivo.ReadLine
i=i+1
cont=cont+1
Loop

archivo.Close
Set archivo = Nothing
Set fso2 = Nothing
%>
<br><br>Aquí se sapara la informacion del TXT por lineas y columnas y se asigna sus valores a una variable, para despues mostrarla<br><br>
<%
i=1
ReDim val(Valor)
While i < cont
val(i) = split(valDatos(i), " ")
i=i+1
Wend
%>
<hr>
<%
i=1
While i < cont
For j=0 to ubound(val(i))
Response.Write("val(" & i & ")(" & j & ") = " & Replace(val(i)(j),"_", " ") & "<br>")
Next
Response.Write("<hr>")
Response.Flush()
i=i+1
Wend
%>



De: Jose ANtonio
Util para: 0 personas

Fecha: 01/02/2006
Mensaje:

Aqui tiene línea por línea de tu archivo, archivo.ReadLine

lo que tienes que hacer es crear un arreglo, donde el caracter que separa  cada campo es el espacio.

 

 

 

 





De: chello
Util para: 2 personas

Fecha: 21/03/2006
Mensaje:

Tengo un problema yo tambien. he visto todo lo ke se enseño pero yo no llego a una solucion.
Mi txt ya contiene separadores, son 9 en total. Mi problema es ke el txt no tiene la informacion en una sola linea sino en varias mas un salto de linea para separar el nuevo registro a guardar. Pongo el ejempo x si no me explike bien:

01/12/2006|CM0104|TXT|30734|1|DATO2|-||90006|

01/12/2006|CM0108|TXT|30788|3|DATO2|ACA VAN DATOS QUE SUPERA EL CARACTER Nº80 Y CREA UN SALTO DE CARRO|ACA TAMBIEN VAN DATOS EXTENSOS|90006|

En total los separadores son SIEMPRE 9, pero como hago para saber si un registro posee mas de una linea para poder guardarlo y realizar un salto mas hacia el siguiente registro.
Agradeceria mucho vuestra ayuda. Gracias



De: rio revuelto
Util para: 0 personas

Fecha: 12/12/2006
Mensaje:

Yo hago el paso de archivos de texto con sql y es demasiado sencillo , aqui les dejo un ejemplillo de sql : 

SELECT * FROM
OPENROWSET('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)}; DEFAULTDIR=C:directoriotxt;Extensions=CSV;',
'SELECT * FROM archivotxt.txt')

les recomiendo ampliamente crear un odbc de este driver de texto antes con el directorio donde se encuentra el txt asi podran decirle si es con separadores o de ancho fijo. cualquier cosa ahi me mandan un mensaje.





De: francisco
Util para: 0 personas

Fecha: 24/12/2006
Mensaje:

Para hacer eso con una base de datos access se podría hacer? me refiero a la linea SQL que has publicado. Como quedaría el comando sql?

Gracias





De: a
Util para: 0 personas

Fecha: 15/01/2007
Mensaje:

aaaa



De: Luis Alejandro
Util para: 0 personas

Fecha: 16/01/2007
Mensaje:

necesito eliminar o modificar una linea de un archivo de texto.

alguen puede ayudarme.





De: el camoton
Util para: 0 personas

Fecha: 30/01/2007
Mensaje:

hola la verdad es que tengo una duda siempre en las mañanas se me para la verga y la verdad estoy preocupado por que ya no hay quien me la chupe si alguien me facilita a unade sus hermanas se lo agradeceria atentamente su picador



De: yo
Util para: 0 personas

Fecha: 08/04/2007
Mensaje:

123



De: sebastian
Util para: 0 personas

Fecha: 11/04/2007
Mensaje:

juanjose: entendi todo perfecto y funciono con un archivo fijo. Pues bien yo estoy enviando a traves de un <input type=file> el archivo que deseo cargar, esto sin copiarlo al servidor.

como puedo hacer para capturar este input file y convertirlo en un objeto file para asi poder cargarlo.

Desde ya espero respuesta, gracias





De: Germain
Util para: 0 personas

Fecha: 27/04/2007
Mensaje:

como puedo realizar una consulta de tres tablas, es decir, si tengo combobox con tres campos: producto,proveedor,categoria(en este caso son mis 3 tablas para realizar la consulta),con solo selecionar una de ellas(tablas) y pulsar el de consulta quiero que me muestre una consulta general o cualquiera de las otras tablas... esa es mi duda quien me podria ayudar



De: Jorge
Util para: 0 personas

Fecha: 11/05/2007
Mensaje:

Sebastian: Para capturar el Input file solo lo haces con un Request.Querystring("nombre input file") Ej: Ruta= Request.Querystring("nombre input file") ojala te sirva



De: lizett
Util para: 2 personas

Fecha: 20/08/2007
Mensaje:

HOLA, YO MANEJO UNA ESTACION METEOROLOGICA Y ESTA ME GUARDA LOS VALORES EN UN ARCHIVO .TXT. LO QUE QUIERO HACER ES EXTRAER LA ULTIMA LINEA DEL ARCHIVO QUE ESTE SE ACTUALIZA CADA 15 MINUTOS Y MOSTRARLOS EN UNA PAGINA... SI ALGUIEN PUDIERA AYUDARME GRACIAS



De: lakbra
Util para: 1 personas

Fecha: 23/08/2007
Mensaje:

Se que igual es mucho pedir, pero alguien puede subir un ejemplo del codigo. Con la base de datos y todos los archivos(.as,.txt,.mdb), sin duda seria la mejor manera para que muchos de los novatos en ASP nos enteraramos de como funciona todo esto.
Gracias a todos, articulo de los mas interesante.



Volver al foro | Tema cerrado | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.