Welcome to Comunidad .NET de Cd. Juárez Sign in | Join | Help

Browse by Tags

All Tags » vb.net

Cómo leer archivos planos con ADO.NET (versión Visual Basic 2005)

Hace poco más de un año escribí este artículo que describe una técnica para leer archivos planos utilizando el OleDB provider de ADO.NET.  Es uno de los artículos de este sitio que ha recibido más comentarios, y entre ellos está uno que dejó fredy que me hizo re-hacer el ejemplo en Visual Basic 2005 para comprobar que no fuera un error de código—en realidad él hizo la mayor parte de la chamba para "traducir" la rutina.

No voy a explicar mucho la lógica del código—para eso te dejo de tarea que leas el artículo original—aquí simplemente te comparto cómo se vería la rutina en VB:

Imports System.IO
Imports System.Data
Imports System.Data.OleDb
 
Module Utilerias
   Public Enum TipoDeArchivoPlano
        Delimited
        Fixed
   End Enum
 
   Public Function LeerArchivoPlano(ByVal archivo As FileInfo, _
        ByVal tieneEncabezado As Boolean, _
        ByVal tipoDeArchivo As TipoDeArchivoPlano) As DataTable
 
        If (Not archivo.Exists) Then
            Throw New FileNotFoundException("No se encontró el archivo especificado")
        End If
 
        Dim conEncabezado As String = IIf(tieneEncabezado, "YES", "NO")
 
        Dim connectionString As String = _
            String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + _
            "Extended Properties='text;HDR={1};FMT={2}'", _
            archivo.DirectoryName, conEncabezado, tipoDeArchivo.ToString())
 
        Dim dt As DataTable = New DataTable("miTabla")
 
        Using conn As OleDbConnection = New OleDbConnection(connectionString)
            Using da As OleDbDataAdapter = New OleDbDataAdapter( _
               "SELECT * FROM " + archivo.Name, conn)
 
               da.Fill(dt)
            End Using
        End Using
 
        Return dt
   End Function
End Module

Para probarla, hice una aplicación sencilla en ASP.NET que mostrara los datos de un archivo .CSV que está dentro de un subdirectorio del sitio web.

El archivo jason.csv contiene:

Producto,Cantidad,Precio
Sierra eléctrica,1,250
Máscara de hockey,1,15.50
Machete,5,2.70
Detergente para ropa (con quita-manchas),1,10
Delantal,2,7.25
Afilador,3,5

La página dentro de la solución que en realidad solo tiene un GridView.  Este es el contenido de Default.aspx:

<%@ Page Language="VB" AutoEventWireup="false" 
   CodeFile="Default.aspx.vb" Inherits="_Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
   <title>Leer un archivo plano con VB 2005</title>
</head>
<body>
   <form id="miFormulario" runat="server">
   <div>
        <asp:GridView ID="miGridView" runat="server">
        </asp:GridView>
   </div>
   </form>
</body>
</html>

Finalmente, para mandar llamar la rutina y bindear—¿enlazar?—los datos al GridView, solo agregué esto en el code-behind:

Partial Class _Default
   Inherits System.Web.UI.Page
 
   Protected Sub miFormulario_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles miFormulario.Load
 
        If Not Page.IsPostBack Then
            Dim archivo As FileInfo = _
               New FileInfo("D:\WebSites\LeerArchivosPlanosVB\Archivos\jason.csv")
 
            Dim tabla As New DataTable
            tabla = Utilerias.LeerArchivoPlano(archivo, True, TipoDeArchivoPlano.Delimited)
 
            If tabla.Rows.Count > 0 Then
               miGridView.DataSource = tabla
               miGridView.DataBind()
            Else
               Response.Write("No hay datos para mostrar.")
            End If
 
        End If
   End Sub
End Class

El resultado de correr la página:

 

Whew! Funcionó smile_teeth

Enjoy. smile_shades


PD.  Puedes descargar el código de este ejemplo del sitio de la Comunidad .NET de Cd. Juárez.

Posted from Diario de un Dotnetero | 0 Comments
Filed under: , , ,

El chapuzón de VB6 a .NET

Siempre he creído que las personas no cambiamos—para bien o para mal—hasta que nos vemos forzados. Hace un par de semanas, el Gran Tatanka, un amigo mío desde hace más años de los que quisiera contar, se encontró en una de estas situaciones:

“¿Qué pedo wey? Oye, ¿no tendrás por ahí una copia del Visual Studio 6? Por alguna razón extraña la mía no quiere instalarse. Y me pidieron unos cambios al sistema X ¿te acuerdas? Están bien peladas, así que es lana fácil, pero no puedo lograr que se instale esta mugre. Me marca un error blablablah y truena la instalación”

“Ah chinga’… Wey, ya mejor ponte a dotnetear.”

“Es que sería un pedo por que tendría que migrar un chingo de código y pos no está tan fácil. Aparte que no sé ni por dónde empezar.”

“Pues con lo de por dónde empezar, te podría ayudar un poco. A ver, vamos a ver por qué no se quiere dejar instalar…”

Después de intentar con mi copia de VS6, confirmamos que en verdad no se podía instalar en una máquina Windows XP SP2, y por la googleada que dimos descubrimos que al parecer es muy común que te topes con broncas no solo para instalar VS6, sino también para correr aplicaciones VB6 bajo Win XP SP2.

La “solución” fue instalar las herramientas en una máquina Windows 2000 o Windows XP Media Center Edition 2005.

Así que con manita de puerco, es hora de que el Tatanka de el chapuzón a .NET.

Aparte de cosas en el Web, hay varios recursos de aprendizaje gratis de Microsoft. Así es, de a grapa. Free as in beer. Y como este blog está en pocho, pues también las recomendaciones:

Sitios:
Cursos en línea y tutoriales:
Webcasts:
Libros. Completitos y descargables en formato PDF for your viewing and printing pleasure:

Blogs:
Así que dejen de hacerse patos y ¡a nadar!