Cómo crear mediante programación un archivo de vínculos de datos (UDL)
Por Enrique Martínez Montejo
Última revisión: 16/08/2003
 

Un archivo de vínculos de datos se utiliza para crear y administrar mediante una interfaz OLE DB las conexiones entre el equipo cliente y los datos almacenados en un orígen de información. Se trata de un archivo de texto en formato Unicode cuya extensión es *.UDL (Universal Data Link) y que se puede tener como referencia para futuras conexiones a bases de datos. El archivo generalmente tiene la extensión UDL, aunque puede tener la extensión que deseemos, pero en éste último caso, no se abrirá el cuadro de diálogo Propiedades de vínculo de datos cuando se haga doble clic sobre el archivo en el Explorador de Windows.

La forma más fácil de crear un archivo universal de vínculos de datos OLE DB es como se detalla a continuación:

  1. Abra el Explorador de Windows.
  2. Seleccione la carpeta donde desee guardar el archivo de vínculos de datos.
  3. Elija Archivo --> Nuevo --> Documento de texto.
  4. Escriba el nombre del archivo con la extensión *.UDL y confirme que desea modificar la extensión del archivo.
  5. Haga doble clic sobre el archivo y configure el nuevo archivo de vínculos de datos que acaba de crear, utilizando para ello el cuadro de diálogo Propiedades de vínculo de datos que le aparecerá en pantalla.

Pero como programador que se supone que es el lector de éste tip, vamos a desarrollar un procedimento para crear dicho archivo mediante código de Visual Basic, sin utilizar para ello el Explorador de Windows y el cuadro de diálogo incluído en la referencia de la API de vínculos de datos (Data Link API), la cual expone una interfaz de usuario que puede implementar en sus aplicaciones para crear y administrar conexiones con un almacén de datos OLE DB.

El formato de archivo Microsoft Data Link

Para crear un archivo .udl, simplemente será suficiente con utilizar el modo Output en una instrucción Open, para posteriormente configurarlo mediante el Explorador de Windows, tal y como se ha comentado anteriormente:

' Cremos el archivo
Open App.Path & "\archivo.udl" For Output As #1

' Cerramos el archivo
Close #1

Pero para configurarlo programáticamente, el archivo .udl necesitará que las dos primeras líneas del archivo contengan necesariamente el siguiente texto:

[oledb]
; Everything after this line is an OLE DB initstring

Después de éstas dos líneas, el resto del archivo se complementa con la cadena de conexión, utilizando el mismo formato usado cuando se abre una base de datos mediante código.

El siguiente ejemplo utiliza el proveedor OLE DB para Microsoft SQL Server para abrir la base de datos de prueba Pubs utilizando la seguridad integrada de Windows NT:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB;Data Source=localhost;" & _
              "Integrated Security=SSPI;Initial Catalog=Pubs

Crear un archivo .udl mediante Visual Basic

La siguiente función muestra cómo crear mediante Visual Basic un nuevo archivo de vínculos de datos, el cual se utilizará posteriormente para abrir una conexión con una base de datos Microsoft Access:

Private Function CreateUDL(ByVal fileName As String) As Boolean

    Dim sChainUDL As String
    Dim iNumFile As Integer

    ' Al utilizar el método de acceso secuencial para
    ' crear el archivo, éste sobreescribirá cualquier
    ' archivo con el mismo nombre que se indique. Por
    ' tanto, advertimos de la existencia del archivo.
    '
    If (Dir(fileName, vbArchive) <> vbNullString) Then
        If (MsgBox("El archivo ya existe. ¿Desea sobreescribirlo?", _
                    vbYesNo + vbInformation, "Crear archivo UDL") = vbNo) Then

            ' Si no se desea sobreescribir el archivo,
            ' salimos del procedimiento

            Exit Function

        End If
    End If

    ' Obtenemos un número de archivo disponible
    iNumFile = FreeFile

    ' Lo único que se necesita para crear un archivo de vínculos
    ' de datos, es crear simplemente un archivo de texto cuya
    ' extensión sea *.udl
    '

    Open fileName For Output As iNumFile

    ' Construimos el texto del archivo. Las dos primeras líneas siempre serán iguales
    sChainUDL = "[oledb]" & vbCrLf
    sChainUDL = sChainUDL & "; Everything after this line is an OLE DB initstring" & vbCrLf

    ' A continuación, configuramos la cadena de conexión con el origen de datos
    sChainUDL = sChainUDL & "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                            "Data Source=C:\Mis documentos\bd1.mdb;" & _
                            "Mode=Share Deny None;" & _
                            "Persist Security Info=False"

    ' Como el archivo UDL tiene formato de texto en Unicode, dicho
    ' archivo necesitará comenzar con el carácter &HFEFF
    '

    Print #iNumFile, StrConv(ChrW(&HFEFF) & sChainUDL, vbUnicode);

    ' Cerramos el archivo
    Close iNumFile

    ' Se ha creado correctamente el archivo
    CreateUDL = True

End Function

Una vez creado el archivo de vínculos de datos, ya lo podemos utilizar desde nuestra aplicación para establecer una conexión con el origen de datos:

Dim cnn As ADODB.Connection

' Creamos un nuevo objeto Connection
Set cnn = New ADODB.Connection

' Abrimos la conexión llamando al archivo UDL
cnn.Open "File Name=" & App.Path & "\archivo.udl"

' Leemos el número de propiedades del objeto Connection
MsgBox cnn.Properties.Count - 1

 

Otros enlaces de interés:

Cómo llamar al cuadro de diálogo Propiedades de vínculo de datos

Indice de Tips de OLE DB


Enrique Martínez Montejo - 2003

NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.

NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.