Crear un archivo de texto delimitado con los datos de una tabla de SQL Server |
Por Enrique Martínez Montejo |
Última revisión: 20/03/2004 |
El siguiente ejemplo muestra cómo crear un archivo de texto delimitado con los datos de una tabla proveniente de una base de datos SQL Server, por lo que es necesario que dicho servicio se encuentre instalado e iniciado a la hora de ejecutar el código.
Si deseamos especificar un delimitador de campos distinto al carácter de delimitación por defecto, deberemos de crear en la misma carpeta donde se creará el archivo de texto, un archivo de configuración de esquema que necesariamente se tendrá que llamar Schema.ini.
El ejemplo creará un nuevo archivo de texto con los datos de la tabla Employees de la base de pruebas Northwind. Antes de ejecutar el código, necesitará crear el archivo Schema.ini, ya que los campos van a estar delimitados por una barra vertical (|). Por tanto, abra el Bloc de Notas, inserte las siguientes entradas, y guarde el archivo en la carpeta donde tiene pensado crear el archivo de texto.
[Employees.txt]
ColNameHeader=True
CharacterSet=ANSI
Format=Delimited(|)
TextDelimiter=none
A continuación, copie y pegue el siguiente código en la sección Declaraciones del formulario de inicio del proyecto.
Option Explicit
Private
Sub Form_Load()
Dim cnn
As ADODB.Connection
Dim lNumRegAfect
As Long
Dim strSQL
As String
' Abrimos una conexión con el
archivo de texto, especificando
' únicamente la ruta de la carpeta
'
Set cnn =
New ADODB.Connection
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data
Source=C:\Mis documentos"
.Properties("Extended Properties") =
"TEXT;"
.Open
End
With
' Construimos la consulta SQL de
creación de tabla. Note
' que utilizamos una cadena ODBC para conectarnos con
' SQL Server.
'
strSQL = "SELECT * INTO [Employees#txt] FROM Employees " & _
"IN
''[ODBC;Driver={SQL Server};" & _
"Server=(local);Database=Northwind;" & _
"UID=sa;PWD=]"
' Ejecutamos la consulta
cnn.Execute strSQL, lNumRegAfect, adExecuteNoRecords
' Leemos el número de registros que
se han traspasado
MsgBox "Número de registros afectados: " & lNumRegAfect
' Cerramos la conexión
cnn.Close
End Sub
Enrique Martínez Montejo - 2004
NOTA: La información contenida en este artículo, 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 explicado, recomendado o sugerido en el presente artículo.
NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.