Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2011, 01:38
PabloManuel
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años, 4 meses
Puntos: 6
Exclamación File System Object: Omite primer caracter.

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]