Obtener Estructura Encabezado DBF Desde Visual Basic .Net
A continuación les traigo una pequeña clase que les permitirá obtener los siguientes datos del encabezado de un archivo DBF.
- version (Byte)
- updateYear (Byte)
- updateMonth (Byte)
- updateDay (Byte)
- numRecords (Int32)
- headerLen (Int16)
- recordLen (Int16)
- reserved1 (Int16)
- incompleteTrans (Byte)
- encryptionFlag (Byte)
- reserved2 (Int32)
- reserved3 (Int64)
- MDX (Byte)
- language (Byte)
- reserved4 (Int16)
Referencias:
Imports System.IO.Path
Imports System.IO
Imports System.Runtime.InteropServices
Public Class Fox Public Structure DBFHeader Public version As Byte Public updateYear As Byte Public updateMonth As Byte Public updateDay As Byte Public numRecords As Int32 Public headerLen As Int16 Public recordLen As Int16 Public reserved1 As Int16 Public incompleteTrans As Byte Public encryptionFlag As Byte Public reserved2 As Int32 Public reserved3 As Int64 Public MDX As Byte Public language As Byte Public reserved4 As Int16 End Structure Shared Function HeaderDBF(ByVal dbfFile As String) As DBFHeader Dim br As BinaryReader = New BinaryReader(File.OpenRead(dbfFile)) Dim buffer() As Byte buffer = br.ReadBytes(Marshal.SizeOf(GetType(DBFHeader))) Dim handle As GCHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned) Dim header As DBFHeader header = Marshal.PtrToStructure(handle.AddrOfPinnedObject(), GetType(DBFHeader)) handle.Free() Return header End Function End Class
Modo de uso
Dim header As New Fox.DBFHeader header = Fox.HeaderDBF("C:\Prueba.DBF")
Espero sea de su utilidad y recuerden ante cualquier consulta dejen sus comentarios.
Saludos
compañero necesito una ayuda, quiero vaciar los datos de una tabla dbf a una tabla mysql en vb .net
Muchas Gracias Victor.
Lo que sucede es que estaba tratando de pegar el codigo
Dim directorio As String = System.IO.Path.GetDirectoryName(fichero.Text)
desde la variable directorio, pero me di cuenta que sale un error por las «»
La verdad Todavia no entiendo bien como puedo sacar la estructura como presentarlo en un LIsBox o guardarlo en un Txt
estoy intentandolo pero no lo logro
Si puedes ayudarme con el codigo adicional estaria agradecido.
Saludos
Si vez en el ejemplo debes llamarlo de la siguiente manera.
Dim header As New Fox.DBFHeader
header = Fox.HeaderDBF(«C:\Prueba.DBF»)
y si quieres pasarlo a un listbox, podría ser utilizando un for each y agregando uno o todos los registros, recuerda que este método recupera una estructura con varios datos entre ellos version , language , numRecords y headerLen.
entonces puedes hacer lo siguiente
For Each h in header
lista.Items.Add(«version: » + h.version + » Tipo: » + h.language)
Next
Saludos
Hola amigo me podrias ayudar ya que me sale error
‘Dim br As BinaryReader = New BinaryReader(File.OpenRead(dbfFile))’
exactamente en la variable dbFIle
Envíanos el error que te arroja y la implementación que le estas dando al método para poder ayudarte.
Saludos