Bueno, se me ha presentado un error super curioso, al cual no encuentro respuesta en Google ni comprendo por qué lo da.
He creado un sistema de boletines en una Web y una de sus opciones es importar direcciones de email de un archivo de texto. Es un archivo normal, no tiene formato CSV, el archivo incluye un email por línea, mi código lee cada línea, ve si el email tiene un formato correcto, si no existe en la MDB y lo da de alta.
¿Cual es el problema? Pues que me omite el primer carácter de cada línea del fichero de texto.
Este sería el fichero: Libreta.txt:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Así de simple, este es el código de importación:
1º subo el archivo
2º lo leo de arriba abajo y creo las direcciones
3º lo borro
Código:
'Si tiene valor impor comenzamos el proceso de importación.
If Proceso = "impor" Then
'Primero subimos el archivo guardando su nombre.
Nombre_Arch = SubirArchivo(directorio)
'Una vez subido abrimos el fichero.
Set FS = Server.CreateObject("Scripting.FileSystemObject")
Set Fichero = FS.OpenTextFile(Directorio & Nombre_Arch, 1, False)
'Con las siguientes variables informamos al cliente al final de la importación
'del número de líneas subidas y de los emails creados.
Buenos = 0
Malos = 0
Repetidos = 0
'Recorremos todo el fichero comprobando el valor leído, si es correcto comprobamos que no
'exista. Mostraremos un mensaje por cada línea en pantalla.
Do While Not Fichero.AtEndOfStream
Linea=Fichero.ReadLine
Response.Write "/" & Linea & "/<br>"
If ValidarCorreo(Linea) = 1 Then
CrearRs "Select * From Boletines_Subcr Where Email = '" & Linea & "'"
If Rs.Eof then Existe = 1 Else Existe = 0
CerrarRs
If Existe = 1 Then
sql= "insert into Boletines_Subcr (email) VALUES ( '" & Linea & "')"
Response.Write "Añadido email : " & Linea & "<br>"
conn.EXECUTE (SQL)
Buenos = Buenos + 1
Else
Response.Write "<b>email ya existente : " & Linea & "</b><br>"
Repetidos = Repetidos + 1
End If
Else
Response.Write "<b>Texto no reconocido como email : " & Linea & "</b><br>"
Malos = Malos + 1
End If
If Not Fichero.AtEndOfStream Then Fichero.Skip(1)
Loop
'Impormaremos sobre los números de la importación.
Response.Write "<br>Se han leído un total de " & Buenos + Malos + Repetidos & " lineas."
Response.Write "<br>Se han importado un total de " & Buenos & " correos."
Response.Write "<br>No se han reconocido un total de " & Malos & " correos."
Response.Write "<br>Un total de " & Repetidos & " correos ya existían o estaban duplicados en el fichero."
Response.Write "<br>Ahora puede subir otro fichero.<br>"
'Cerramos el fichero y lo borramos.
Fichero.Close
Set Fichero = Nothing
FS.deletefile(Directorio & Nombre_Arch)
End If
En la base de datos me guarda lo siguiente:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]