Conectar a una base de datos de SQL Server con VB6

(Abrir una tabla y mostrar los campos/columnas de la tabla)
 

Publicado: 10/Sep/2004
Actualizado: 26/May/2007

Pulsa aquí, si quieres ver cómo conectar a una base de SQL Server 2005

 


Es curioso, pero de todos los ejemplos que tengo sobre acceso a bases de datos, (usando VB6 y anteriores), no tenía ninguno que usase una base de datos de SQL Server, todos los ejemplos eran de bases de Access.
Pero más vale tarde que nunca, ¿verdad?

Pues aquí tienes un ejemplo para acceder a una base de datos de SQL Server, abrir una tabla y, para que el ejemplo no sea demasiado corto, mostraremos en un combo todos los campos (columnas) de dicha tabla.

Seguramente en otras ocasiones pondré ejemplos más completos que usen bases de datos de SQL Server, aunque, si te fijas, lo único que diferencia el uso de este tipo de bases de datos y las de Access es la forma de conectarse al "proveedor" de la base de datos.

Para este ejemplo, tendremos un formulario en el que colocaremos un botón llamado cmdAbrir y un ComboBox llamado cboCampos.

También necesitaremos una referencia a: Microsoft ActiveX Data Objects 2.0 Library o cualquier versión superior que tengas.

En la parte general de declaraciones tendremos definidas dos variables, una de un objeto Connection y otra de un objeto Recordset.

En el evento del botón cmdAbrir haremos todo el proceso de conectar a la base de datos, cargar el recordset con la tabla que queramos acceder y mostraremos los campos de dicha tabla en el combo.

Aquí tienes el código completo.

Nota:
He resaltado en negrita y en rojo los sitios en los que deberías indicar tus propios datos, es decir, el Data Source (fuente de datos), la base de datos (Initial Catalog) y la tabla a abrir.

En este ejemplo, el Data Source usado en el ejemplo, es el que instala el SDK de .NET Framework.

 

'------------------------------------------------------------------------------
' Conectar a una base de datos de SQL Server                        (08/Sep/04)
' y mostrar los campos de la tabla
'
' Para que este ejemplo funcione, necesitamos una referencia a:
' Microsoft ActiveX Data Objects 2.0 Library (o superior)
'
' ©Guillermo 'guille' Som, 2004
'------------------------------------------------------------------------------
Option Explicit

Private cnn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub cmdAbrir_Click()
    Dim tField As ADODB.Field
    '
    ' Por si ya estaba abierta...
    Set cnn = Nothing
    Set rst = Nothing
    '
    ' Crear los objetos
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    '
    ' abrir la base usando las credenciales de Windows
    cnn.Open "Provider=SQLOLEDB; " & _
             "Initial Catalog=pubs; " & _
             "Data Source=(local)\NETSDK; " & _
             "integrated security=SSPI; persist security info=True;"
    '
    ' abrir el recordset indicando la tabla a la que queremos acceder
    rst.Open "SELECT * FROM authors", cnn, adOpenDynamic, adLockOptimistic
    '
    ' Asignar los nombres de los campos al combo
    With cboCampos
        .Clear
        For Each tField In rst.Fields
            .AddItem tField.Name
        Next
        .ListIndex = 0
    End With
    '
    ' Cerrar el recordset y la conexión
    rst.Close
    cnn.Close
    '
End Sub

 

¡Que lo disfrutes!

Nos vemos.
Guillermo


Índice ADO --- Índice VB6

ir al índice