CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Trabajar Con Dbf

(1/3) > >>

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(&#34;C:&#092;DPT&#092;AUD&#092;&#34;, &#34;FAMILIA&#34;, &#34;[Codigo] TEXT (2), [Nombre] TEXT (25)&#34;)         Dim oConDBF As New ADODB.ConnectionClass        Dim oRstDBF As New ADODB.RecordsetClass         oConDBF.Open(&#34;DRIVER={Microsoft dBASE Driver (*.dbf)};DBQ=C:&#092;DPT&#092;AUD&#092;&#34;)        oRstDBF.Open(&#34;SELECT * FROM [FAMILIA];&#34;, oConDBF, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic, ADODB.CommandTypeEnum.adCmdText)         vlComando = &#34;SELECT * FROM CatalogoFamilias&#34;        dsMultU = DatosATrans(vlComando, &#34;CatalogoFamilias&#34;)        For Each drMultU In dsMultU.Tables(0).Rows            oRstDBF.AddNew()            oRstDBF.Fields(&#34;Codigo&#34;).Value = drMultU!CodFamilia            vlCadena = drMultU!Descripcion            If vlCadena.Length &#62; 25 Then                oRstDBF.Fields(&#34;Nombre&#34;).Value = vlCadena.Substring(0, 25)            Else                oRstDBF.Fields(&#34;Nombre&#34;).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 = &#34;DRIVER={Microsoft dBASE Driver (*.dbf)};DBQ=&#34; & Base        pconBase.Open()        pcmdTB.CommandText = &#34;CREATE TABLE [&#34; & Nombre & &#34;] (&#34; & Campos & &#34;);&#34;        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 = &#34;[DatosATrans]&#34;            .CommandType = System.Data.CommandType.StoredProcedure             .Parameters.Add(New System.Data.SqlClient.SqlParameter(&#34;@ComandSQL&#34;, System.Data.SqlDbType.Text))         End With         scdaMovCont.SelectCommand = sccmdSelectAll         Try             sccnnConnection.Open()             scdaMovCont.SelectCommand.Parameters(&#34;@ComandSQL&#34;).Value = strComandSQL             'Fill DataSet            scdaMovCont.Fill(dsMovCont, strTabla)             sccnnConnection.Close()         Catch oSqlException As SqlException             If (sccnnConnection.State &#60;&#62; ConnectionState.Closed) Then                Try                    sccnnConnection.Close()                Catch                End Try            End If             Throw New ApplicationException(&#34;Los registros no pudieron ser leidos debido a un error de base de datos.&#34;, oSqlException)         Catch ex As Exception             If (sccnnConnection.State &#60;&#62; ConnectionState.Closed) Then                Try                    sccnnConnection.Close()                Catch                End Try            End If             Throw New ApplicationException(&#34;Los registros no pudieron ser leidos debido a un error de aplicación.&#34;, 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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa