domingo 28 de enero de 2007

Obtener los nombres de los DBF que hay en un directorio

Esta funcion permite ver los nombres de los archivos DBF que hay en una carpeta del disco.
(VB.NET)

'' Esta funcion obtiene los nombres de los archivos DBF de un directorio
Public Function ObtenerArchivosDBF(ByVal Directorio As String, ByVal Password As String)
'
' Es necesario agregar una referencia a ADODB.
'
' vas al menú Proyecto->Agregar referencia..., ahí seleccionarás ADODB
'
Try
Dim Strconn As New ADODB.Connection ' Instancia una conexion
With Strconn ' Se arma la cadena de conexion
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" ; & Directorio & ";" & _
"Extended Properties=dBASE IV;" & _
"User ID=Admin;" & _
"Password=" & Password & ";"

.Open()
End With
Dim rst As ADODB.Recordset ' Se instancia el recordset
rst = Strconn.OpenSchema(ADODB.SchemaEnum.adSchemaTables) ' Se guarda en el recordset el esquema de la tabla
Dim cadenas() As String ' Se crea el array en donde se almacenaran los nobres de los archivos
Dim contador As Integer ' Variable que se utiliza para control del array
contador = 0
Dim longitud As Integer
While Not rst.EOF ' Mientras no se llege al final ( EOF ) del recordset se contiua en el buqule
ReDim Preserve cadenas(contador) ' Se re-dimenciona el array preservando su contenido.
cadenas(contador) = rst.Fields("TABLE_NAME").Value.ToString ' Se almacena en el array el nombre de la hoja
contador += 1 ' Incrementa el contador en uno
rst.MoveNext() ' Salta a la siguiente hoja en el libro
End While
Strconn.Close() ' Termina la conexion con el libro
Strconn = Nothing ' Vacia la conexion
Return (cadenas) ' Retorna el array para que pueda ser asigando a donde se desee

Catch ex As OleDb.OleDbException
MessageBox.Show("Error Cargando el Archivo DBF: " & ex.Message)
End Try

End Function


' Primera sobrecarga
Public Function ObtenerArchivosDBF(ByVal Directorio As String)
Try
Return (ObtenerTablasDBF(Directorio, "")) ' Retorna el array para que pueda ser asigando a donde se desee

Catch ex As OleDb.OleDbException
MessageBox.Show("Error Cargando el Archivo DBF: " & ex.Message)
End Try
End Function



Ejemplos:

Se debera agregar un boton y un listbox para probar este ejemplo

Private Sub boton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles leer.Click

Dim contador As Integer ' Crea un contador para recorrer la coleccion
Dim cadenas() As String ' Crea una matriz en donde se almacenara el resultado de la consulta
Dim hojas As New LeerArchivos
cadenas = hojas.ObtenerArchivosDBF("C:\Documents and Settings\Administrador\Mis documentos\")

For contador = 0 To cadenas.Length - 1
Me.ListBox1.Items.Add(cadenas(contador))

Next

End Sub