Buenas:
He creado un código para lanzar consultas en MySql y tengo el siguiente problema.
A la hora de volcar el recordset me vuelca nada mas que 7 columnas cuando hay 10.
Si utilizo la propiedad:
Debug.Print recsql.Fields.Count
Me devuelve 10
Y si utiliz:
Range("A1").CopyFromRecordset
Me vuelca en la hoja de excel 7 columnas, ya no se que mas hacer...
Saludos.
Bueno visto lo visto en el soporte de microsoft voy a buscar otro metodo para volcar la consulta....
:rolleyes:
(http://img801.imageshack.us/img801/9942/1noa.jpg)
pfff los de Mocosoft son unos maquinas ... (vaya basura de método,falla y ni siquiera da un error...)
es verdad que falla el método lo certifico, al final lo he solucionado con otro código, lo pego por si alguien lo quiere para algún día:
Sub MySql_VolcadoExcel()
Dim conexion As New ADODB.Connection
Dim miservidor As String
Dim bd As String
Dim user As String
Dim i, f, c As Long
Dim rs As ADODB.Recordset
miservidor = "XXXXXXXXX"
bd = "XXXXXXXXX"
user = "XXXXXXXXXXx"
Set conexion = New ADODB.Connection
'ABRE LA CONEXION
conexion.Open "DRIVER={MySQL ODBC 5.2a Driver};SERVER=" & miservidor & ";DATABASE=" & bd & ";UID=" & user & ";password=XXXXX;OPTION=16427"
Set recsql = New ADODB.Recordset
'EJECUTA LA CONSULTA: evidentemente consulta1 es una variable que ya contiene la consulta en si...
recsql.Open consulta1, conexion
ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Consulta " & NombreConsulta
c = 0
f = 0
' recorre las columnas, añade el nombre del campo al encabezado
For i = 0 To recsql.Fields.Count - 1
Range(Chr(i + 65) & f + 1).Value = recsql.Fields(i).Name
Next
f = f + 1
' recorre todo el RECORDSET hasta el final
Do While Not recsql.EOF
' recorre los campos en el registro actual del RECORDSET para recuperar el dato
For i = 0 To recsql.Fields.Count - 1
' añade el valor a la celda
Range(Chr(c + 65) & (f + 1)).Value = recsql.Fields(c)
c = c + 1
Next
' RESETEA EL INDICE DE LAS COLUMNAS
c = 0
' SUMA UNA FILA
f = f + 1
' SIGUIENTE REGISTRO DEL RECORDSET
recsql.MoveNext
Loop
' Cierra y descarga los objetos
On Error Resume Next
recsql.Close
conexion.Close
Set conexion = Nothing
Set recsql = Nothing
End Sub