Ejemplo 1
Ejemplo que utiliza el método GetString del objeto recordset de Ado para crear un archivo Csv a partir del contenido del recordset
Para obtener los datos con este método , solo hay que asignar a una variable String los datos devueltos por el método GetString
Al método GetString hay que indicarle el delimitador ( en este caso la coma ), y el salto de carro ( VbCrlf ) para los registros
Csv = Recordset.GetString(adClipString, -1, ",", vbCrLf, "(NULL)")
El siguiente ejemplo utiliza la base de datos Biblio.mdb que se instala con Visual basic. Luego llena un recordset con todos los registros de la tabla Authors, y genera el archivo csv en el Directorio c:\ con el nombre archivo.csv
Agregar la referencia Microsoft Ado
Código fuente en el formulario
- Option Explicit
- 'Función que exporta el recordset a un Archivo de texto csv separado por comas
- '*********************************************************************************
- Public Function Recordset_a_CSV(rs As ADODB.Recordset, Path_Csv As String) As Boolean
- On Error GoTo errFunction
- Dim Datos_Csv As String
- ' Devuelve los datos separados por comas y con un salto de carro
- Datos_Csv = rs.GetString(adClipString, -1, ",", vbCrLf, "(NULL)")
- ' Abre y Crea un archivo de texto para escribir los datos
- Open Path_Csv For Output As #1
- ' escribe los datos
- Print #1, Datos_Csv
- 'cierra
- Close
- ' Ok
- Recordset_a_CSV = True
- Exit Function
- 'Error
- errFunction:
- MsgBox Err.Description, vbCritical
- End Function
- Private Sub Form_Load()
- Dim cnn As ADODB.Connection
- Dim Rst As ADODB.Recordset
- Dim R As Boolean
- ' Nueva conexión Ado
- Set cnn = New ADODB.Connection
- cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source" & _
- "=C:\Archivos de programa\Microsoft Visual " & _
- "Studio\VB98\BIBLIO.MDB;Persist Security Info=False"
- cnn.CursorLocation = adUseClient
- ' Abre la base de datos
- cnn.Open
- ' Nuevo recordset ADO
- Set Rst = New ADODB.Recordset
- ' Abre el recordset
- Rst.Open "Select * From Authors", cnn, adOpenStatic, adLockOptimistic
- ' Llama a la función que genera el Csv con los datos del recordset
- R = Recordset_a_CSV(Rst, "c:\archivo.csv")
- If R Then
- MsgBox " Se genró el archivo CSV correctamente ", vbInformation
- End If
- ' Cierra el recordset , la conexión y descarga las variables
- If Not Rst.State = adStateOpen Then
- Rst.Close
- End If
- If Not Rst Is Nothing Then
- Set Rst = Nothing
- End If
- If Not cnn.State = adStateOpen Then
- cnn.Close
- End If
- If Not cnn Is Nothing Then
- Set cnn = Nothing
- End If
- End Sub
Ejemplo 2
Este es otro ejemplo , pero a diferencia del anterior, para generar el archivo con los datos, se recorre el recordset fila a fila en un bucle.La salida del archivo csv queda de la siguiente forma:
A la función se le debe enviar como argumento, el recordset y la ruta del .csv
Código fuente en el formulario
- Option Explicit
- ' función que recibe el recordset de ado, y el path del archivo csv
- ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- Function Recordset_a_Csv(path As String, _
- rs As Recordset) As Boolean
- On Error GoTo Err_function
- Dim Columna
- Dim Fila As Integer
- ' Crea el archivo csv
- Open path For Output As #1
- ' Se mueve al primer registro
- rs.MoveFirst
- ' recorre todo el recordset
- For Fila = 0 To rs.RecordCount - 1
- ' nombre del campo
- Print #1, Chr(34) & Trim(rs.Fields(0)) & Chr(34);
- ' recorre todos los campos
- For Columna = 1 To rs.Fields.Count - 1
- ' imprime la fila actual en el fichero
- Print #1, "," & Chr(34) & Trim(rs.Fields(Columna)) & Chr(34);
- Next
- ' escribe una línea en blanco
- Print ""
- ' salto de carro
- Print #1, Chr(13) & Chr(10);
- ' mueve el recordset al siguiente registro
- rs.MoveNext
- Next
- ' cierra el archivo csv
- Close #1
- Exit Function
- Err_function:
- MsgBox Err.Description, vbCritical
- Close
- End Function
Y por ejemplo para llamarla:
- ' Objeto connection
- Dim cn As New ADODB.Connection
- ' Connectionstring
- cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
- "Source=C:\Archivos de programa\Microsoft " & _
- "Visual Studio\VB98\BIBLIO.MDB;Persist Security Info=False"
- ' Abre
- cn.Open
- ' Instancia el recordset
- Dim rs As New Recordset
- ' Le pasa la consulta sql
- rs.Open "Select * from authors", cn, adOpenStatic, adLockOptimistic
- Call Recordset_a_Csv("c:\ejemplo.csv", rs)
No hay comentarios:
Publicar un comentario