Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/02/2011, 13:07
Avatar de jorgedx
jorgedx
 
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Error 1004, error definido por la aplicacion o el objeto

Bueno Cacho, estaba cantado lo que habia que hacer
Código vb:
Ver original
  1. Sheets(Hoja).Cells(f + 1, c + 1).Value = rst.Fields(c)

Ahora el codigo para hacer consultas a una bd access desde excel
Código vb:
Ver original
  1. Sub consultar_AlHacerClic()
  2.    Call Ejecutar("Select * From Maestro", "Hoja2")
  3.    'Call Ejecutar("Select * From Maestro", "Hoja2")
  4. End Sub
  5.  
  6.  
  7. Sub Ejecutar(Sql As String, Hoja As String)
  8.  
  9. Dim cn As Object
  10.  
  11. ' crea un objeto Connection
  12. Set cn = CreateObject("ADODB.Connection")
  13.  
  14. ' IMPORTANTE: Indicar la cadena de conexión a usar
  15. cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
  16.                             "Source=D:\Documents & Settings\wasmadr\" & _
  17.                             "Escritorio\practica 2011\bd1.mdb;Persist Security Info=False"
  18.        
  19.     ' verifica que los parámetros no estén vacios
  20.    If Sql <> vbNullString And Hoja <> vbNullString Then
  21.                        
  22.         ' variable para al rec de ado
  23.        Dim rst As Object
  24.                
  25.         ' abre la conexión a la base de datos
  26.        cn.Open
  27.            
  28.             ' crea un nuevo objeto recordset
  29.            Set rst = CreateObject("ADODB.Recordset")
  30.            
  31.             ' Ejecuta el sql para llenar el recordset
  32.            rst.Open Sql, cn, 1, 3
  33.             ' variables para los indices de las filas y columnas
  34.            c = 0
  35.             f = 0
  36.                
  37.             ' recorre las columnas, añade el nombre del campo al encabezado
  38.            For i = 0 To rst.Fields.Count - 1
  39.                
  40.                 'Sheets(Hoja).Range(Chr(i + 65) & f + 1).Value = rst.Fields(i).Name
  41.                 Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
  42.                  
  43.                  Sheets(Hoja).Cells(f + 1, i + 1).Value = rst.Fields(i).Name
  44.            
  45.            Next
  46.  
  47.             f = f + 1
  48.                              
  49.             ' recorre todo el recordset hasta el final
  50.            Do While Not rst.EOF
  51.                
  52.                 ' recorre los campos en el registro actual del recordset para recuperar el dato
  53.                For i = 0 To rst.Fields.Count - 1
  54.                     ' añade el valor a la celda
  55.                    'Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
  56.                    Sheets(Hoja).Cells(f + 1, c + 1).Value = rst.Fields(c)
  57.                     c = c + 1
  58.                 Next
  59.                
  60.                 ' resetea el indice de las columnas
  61.                c = 0
  62.                 ' Referencia al registro actual (incrementa )
  63.                f = f + 1
  64.                 ' Siguiente registro
  65.                rst.MoveNext
  66.           Loop
  67.             ' cierra y descarga las referencias
  68.            On Error Resume Next
  69.             rst.Close
  70.             cn.Close
  71.             Set cn = Nothing
  72.             Set rst = Nothing
  73.         End If
  74. End Sub
__________________
Nuevamente a las pistas ...