Excel y bases de datos (Oracle)

Como continuación de posts anteriores, en esta ocasión vamos a analizar como establecer una conexión entre Excel y una base de datos Oracle, que nos permita hacer una consulta devolviendo los datos a Excel. Ya comenté que son diversas las tareas que se pueden efectuar entre una base de datos y Excel. Así que para tener un primer contacto y repasar las diferencias que existen entre unos SGBD y otros, he preferido no adentrarme demasiado en otro tipo de operaciones.

Como hacíamos en otras macros, es necesario como paso previo tener activadas las referencias oportunas: Microsoft ActiveX Data Objects 2.x. Este ejemplo ha sido desarrollado con la versión Oracle® Database Express Edition. Para ello he creado una pequeña tabla “EMPLEADOS” con tres campos ID, NOMBRE y EDAD.

Veamos el código:

Sub excel_oracle()
  ‘Definiendo las variables para la conexión, reordset, columnaumnas y filas
  Dim conexion As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim columna As Integer
  Dim fila As Integer

  ‘creando la conexión a la base de datos y al recordset
  Set conexion = New ADODB.Connection
  Set rs = New ADODB.Recordset

   ‘parámetros de la conexión
  conexion.Open ( _
     “User ID=system” & _
    “;Password=root” & _
    “;Data Source=XE” & _
    “;Provider=MSDAORA.1”)

  ‘sentencia SQL sacando todos los datos de la tabla EMPLEADOS
  rs.Open “select * from EMPLEADOS”, conexion

  ‘vamos a presentar los resultados poniendo el contador a cero
  ”””””””””””””””””””””””””””””””’
  ‘Colocamos los datos empezando por os títulos de las columnas”
  ‘                                                            ”
  ”””””””””””””””””””””””””””””””’
  columna = 0

  ‘ En la primera fila:los nombres de las columnas
  Do While columna < rs.Fields.Count
    Cells(1, columna + 1) = rs.Fields(columna).Name
    columna = columna + 1
  Loop

  ‘Ahora los datos obtenidos de la selección
  fila = 1
  Do While Not rs.EOF
    fila = fila + 1
    columna = 0

    Do While columna < rs.Fields.Count
      Cells(fila, columna + 1) = rs.Fields(columna).Value
      columna = columna + 1
    Loop

    rs.MoveNext
  Loop

End Sub

El fragmento de código referente a la conexión, nos marca los parámetros que se precisan para realizar la misma: el usuario (en este caso system) , la contraseña (root) el origen de los datos (la base de datos XE) y el proveedor   OLEDB de Microsoft para Oracle que es MSDAORA.1.

Después lanzamos la orden SQL y presentamos los datos con dos bucles, uno para la cabecera, y otro para los datos. Y aquí el resultado:

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: