Exportar de SQL Server a dbf

08/02/2007 - 14:07 por César | Informe spam
Hola foro, lo que estoy necesitando hacer es exportar 2 tablas de SQL Server
2005 a tablas de FoxPro .dbf.
Estoy trabajando en VB con VS.NET 2005.
¿Alguna idea?
Gracias!

César

Preguntas similare

Leer las respuestas

#1 SoftJaén
08/02/2007 - 15:58 | Informe spam
"César" escribió:

lo que estoy necesitando hacer es exportar 2 tablas de SQL Server 2005 a
tablas de FoxPro .dbf.
¿Alguna idea?



Hola, César:

Haz una prueba utilizando el ISAM para XBase que nos proporciona el motor
Microsoft Jet. Para ello, deberás de abrir una conexión con el archivo DBF
que deseas crear, mediante el proveedor de datos Ole Db .NET, y
ejecutar una consulta SQL de creación de tabla, en cuya cadena de conexión
deberás de especificar tu intención de conectarte al servidor de SQL Server
mediante el driver ODBC del mismo. Aquí tienes un ejemplo para crear un
archivo DBF con los datos de la tabla Employees de la base de datos de
prueba Northwind:

Imports System.Data.OleDb

' Construimos la cadena de conexión Ole Db,
' para crear el archivo DBF, indicando únicamente
' la ruta de la carpeta donde se creará.
'
Dim connString As String = _
"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = C:\Mis documentos;" & _
"Extended Properties='dBASE 5.0;'"

' Creamos un nuevo objeto Connection
'
Dim cnn As New OleDbConnection(connString)

Try
' Creamos la consulta SQL de creación de tabla,
' indicando que vamos a utilizar el driver
' ODBC de Microsoft SQL Server
'
Dim sql As String = _
"SELECT * INTO [Archivo#dbf] " & _
"FROM [Employees] " & _
"IN ''[ODBC;DRIVER={SQL Server};" & _
"Server=(local);" & _
"Database=Northwind;" & _
"UID=cuenta_usuario;" & _
"PWD=contraseña_usuario]"

' Configuramos un objeto Command para ejecutar
' la consulta SQL de creación de tabla
'
Dim cmd As New OleDbCommand(sql, cnn)

' Abrimos la conexión
cnn.Open()

' Ejecutamos la consulta
Dim n As Integer = cmd.ExecuteNonQuery()

MessageBox.Show("Se creado satisfactoriamente el archivo. " & _
"Número de registros afectados: " & n.ToString, _
"Crear archivo dBASE")

Catch ex As OleDbException
MessageBox.Show(ex.Errors(0).Message)

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

En este supuesto, en lugar de EXPORTAR, estarías IMPORTANDO datos al archivo
DBF procedentes de una tabla contenida en una base de datos Microsoft SQL
Server. Si deseas crear dos archivos DBF, pues deberás de ejecutar la
consulta dos veces.

Nota: si los archivos DBF ya están creados, en lugar de ejecutar una
consulta de creación de tabla (SELECT * INTO), deberás de ejecutar una
consulta de datos añadidos (INSERT INTO), para ejecutar una inserción masiva
de registros; de la forma que te indico no se puede ejecutar una consulta de
un único registro. Para ejecutar la consulta INSERT INTO, obviamente deberás
de utilizar la sintaxis propia, a la cual le deberás de indicar de igual
manera que los datos están en una base de datos de SQL Server.

Por último, salvo que tengas instalado en tu equipo el motor de base de
datos de Borland, procura que el nombre del archivo DBF contenga la clásica
longitud de 8+3 caracteres.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 César
08/02/2007 - 16:26 | Informe spam
Enrique, la verdad que 1 millon de gracias.
Bien merecido tenés el MVP eh!
Lo voy a probar y te cuento como salio.

Saludos!

César

"SoftJaén" escribió en el mensaje
news:
"César" escribió:

lo que estoy necesitando hacer es exportar 2 tablas de SQL Server 2005 a
tablas de FoxPro .dbf.
¿Alguna idea?



Hola, César:

Haz una prueba utilizando el ISAM para XBase que nos proporciona el motor
Microsoft Jet. Para ello, deberás de abrir una conexión con el archivo DBF
que deseas crear, mediante el proveedor de datos Ole Db .NET, y
ejecutar una consulta SQL de creación de tabla, en cuya cadena de conexión
deberás de especificar tu intención de conectarte al servidor de SQL
Server
mediante el driver ODBC del mismo. Aquí tienes un ejemplo para crear un
archivo DBF con los datos de la tabla Employees de la base de datos de
prueba Northwind:

Imports System.Data.OleDb

' Construimos la cadena de conexión Ole Db,
' para crear el archivo DBF, indicando únicamente
' la ruta de la carpeta donde se creará.
'
Dim connString As String = _
"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = C:\Mis documentos;" & _
"Extended Properties='dBASE 5.0;'"

' Creamos un nuevo objeto Connection
'
Dim cnn As New OleDbConnection(connString)

Try
' Creamos la consulta SQL de creación de tabla,
' indicando que vamos a utilizar el driver
' ODBC de Microsoft SQL Server
'
Dim sql As String = _
"SELECT * INTO [Archivo#dbf] " & _
"FROM [Employees] " & _
"IN ''[ODBC;DRIVER={SQL Server};" & _
"Server=(local);" & _
"Database=Northwind;" & _
"UID=cuenta_usuario;" & _
"PWD=contraseña_usuario]"

' Configuramos un objeto Command para ejecutar
' la consulta SQL de creación de tabla
'
Dim cmd As New OleDbCommand(sql, cnn)

' Abrimos la conexión
cnn.Open()

' Ejecutamos la consulta
Dim n As Integer = cmd.ExecuteNonQuery()

MessageBox.Show("Se creado satisfactoriamente el archivo. " & _
"Número de registros afectados: " & n.ToString, _
"Crear archivo dBASE")

Catch ex As OleDbException
MessageBox.Show(ex.Errors(0).Message)

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

En este supuesto, en lugar de EXPORTAR, estarías IMPORTANDO datos al
archivo
DBF procedentes de una tabla contenida en una base de datos Microsoft SQL
Server. Si deseas crear dos archivos DBF, pues deberás de ejecutar la
consulta dos veces.

Nota: si los archivos DBF ya están creados, en lugar de ejecutar una
consulta de creación de tabla (SELECT * INTO), deberás de ejecutar una
consulta de datos añadidos (INSERT INTO), para ejecutar una inserción
masiva
de registros; de la forma que te indico no se puede ejecutar una consulta
de
un único registro. Para ejecutar la consulta INSERT INTO, obviamente
deberás
de utilizar la sintaxis propia, a la cual le deberás de indicar de igual
manera que los datos están en una base de datos de SQL Server.

Por último, salvo que tengas instalado en tu equipo el motor de base de
datos de Borland, procura que el nombre del archivo DBF contenga la
clásica longitud de 8+3 caracteres.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o
sugerido en el presente mensaje.





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida