CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Trabajar Con Dbf
senzao18:
Holas tengo una preguntilla....
Eh tratado de varias formas hacer una tabla DBF desde VB.Net.... Y no eh encontrado una solucion aceptable....
Lo intente grabando la informacion en un archivo de excel y grabandocon con formato DBF IV, pero es muy lento...
Intente grabandolo en un archivo y poniendolela extension DBF... Este es rapido pero no funciona al momento de querer abrir la tabla con el sistema que trabajara con ella....
Alguien tiene alguna otra forma :S.....?
Maxi.Net:
Haber que te parece si crear la tabla en acces y luego importas el archivo DBF desde access eso resulta, pero si lo vas a hacer a "còdigo" NO tengo idea de como puedes hacerlo.
En modo grafico y con acces:
Creas la BD. Archivo Obtener datos externos -> Importar, escoges DBaseIII
Eso!! espero sirva de algo
senzao18:
Gracias por tu ayuda...
Aunque la forma en que lo necesito es por codigo...
Logre hacerlo a la antiguita con el ADODB.dll :D.
Maicol:
HOla soy nuevo en este grupo aun no se muy bien como funciona ... bueno yo desde vb.net quiero crear un tabla dbf con lkos datos de mi datatable y creo q tu ya lo hiciste me puedes orientar
senzao18:
<_< OK Te ajunto un ejemplo...
--- Código: Text --- Public Sub Familias() Dim oGenArch As New GenerarArch(oApplicationContext) Dim dsMultU As DataSet, drMultU As DataRow, vlComando As String, vlCadena As String CrearDBF("C:\DPT\AUD\", "FAMILIA", "[Codigo] TEXT (2), [Nombre] TEXT (25)") Dim oConDBF As New ADODB.ConnectionClass Dim oRstDBF As New ADODB.RecordsetClass oConDBF.Open("DRIVER={Microsoft dBASE Driver (*.dbf)};DBQ=C:\DPT\AUD\") oRstDBF.Open("SELECT * FROM [FAMILIA];", oConDBF, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic, ADODB.CommandTypeEnum.adCmdText) vlComando = "SELECT * FROM CatalogoFamilias" dsMultU = DatosATrans(vlComando, "CatalogoFamilias") For Each drMultU In dsMultU.Tables(0).Rows oRstDBF.AddNew() oRstDBF.Fields("Codigo").Value = drMultU!CodFamilia vlCadena = drMultU!Descripcion If vlCadena.Length > 25 Then oRstDBF.Fields("Nombre").Value = vlCadena.Substring(0, 25) Else oRstDBF.Fields("Nombre").Value = drMultU!Descripcion End If oRstDBF.Update() Next dsMultU = Nothing oRstDBF.Close() oConDBF.Close() End Sub Public Sub CrearDBF(ByVal Base As String, ByVal Nombre As String, ByVal Campos As String) Dim pconBase As Odbc.OdbcConnection Dim pcmdTB As Odbc.OdbcCommand pconBase = New Odbc.OdbcConnection pcmdTB = New Odbc.OdbcCommand pconBase.ConnectionString = "DRIVER={Microsoft dBASE Driver (*.dbf)};DBQ=" & Base pconBase.Open() pcmdTB.CommandText = "CREATE TABLE [" & Nombre & "] (" & Campos & ");" pcmdTB.Connection = pconBase pcmdTB.ExecuteNonQuery() pconBase.Close() End Sub Public Function DatosATrans(ByVal strComandSQL As String, ByVal strTabla As String) As DataSet Dim sccnnConnection As New SqlConnection(oApplicationContext.ApplicationConfiguration.DataStorageConfiguration. _ GetConnectionString) Dim sccmdSelectAll As SqlCommand Dim scdaMovCont As SqlDataAdapter Dim dsMovCont As DataSet sccmdSelectAll = New SqlCommand scdaMovCont = New SqlDataAdapter dsMovCont = New DataSet With sccmdSelectAll .Connection = sccnnConnection .CommandText = "[DatosATrans]" .CommandType = System.Data.CommandType.StoredProcedure .Parameters.Add(New System.Data.SqlClient.SqlParameter("@ComandSQL", System.Data.SqlDbType.Text)) End With scdaMovCont.SelectCommand = sccmdSelectAll Try sccnnConnection.Open() scdaMovCont.SelectCommand.Parameters("@ComandSQL").Value = strComandSQL 'Fill DataSet scdaMovCont.Fill(dsMovCont, strTabla) sccnnConnection.Close() Catch oSqlException As SqlException If (sccnnConnection.State <> ConnectionState.Closed) Then Try sccnnConnection.Close() Catch End Try End If Throw New ApplicationException("Los registros no pudieron ser leidos debido a un error de base de datos.", oSqlException) Catch ex As Exception If (sccnnConnection.State <> ConnectionState.Closed) Then Try sccnnConnection.Close() Catch End Try End If Throw New ApplicationException("Los registros no pudieron ser leidos debido a un error de aplicación.", ex) End Try sccnnConnection.Dispose() sccnnConnection = Nothing Return dsMovCont End Function
Espero y con esto te ayude....
Las funciones se pueden optimizar mas para exportar cualquier DataTable.... Solo es cuestion de meterlo algo mas de empeño.... ;) ..
P.D. Lo use en VB 2003...
Navegación
[#] Página Siguiente
Ir a la versión completa