Resumen ODBC - Registrar DSN   (2 mensajes )

Hola Matias

>Hace meses que estoy suscripto a la lista, y esta es mi segunda pregunta.
>Espero tener mejor suerte, puesto que la primera no tuvo respuesta alguna.
>Solo un comentario de Guille.

Bueno, pues yo, aunque no escribo mucho -por el tiempo- voy a intentar
ayudar, para que no te quejes de la lista...:-)))

>Estoy corrigiendo una aplicación que accede a una base de datos Access por
>medio de ODBC. El tema es que la aplicacion debe ser instalada en varias
>estaciones de trabajo y el DSN que utiliza no existe en todas ellas.
>Mi pregunta es: Como hacer desde visual basic para que la aplicacion
>verifique si existe el DSN en cuestion y en caso de que no exista que lo
>registre???
>Para verificar la existencia, supongo que una forma es invocar la conexion,
>si se produce un error es que no existe. Pero quizas hay otra forma mas
>"prolija".

1º problema : Para ver si existe una DSN tienes dos enfoques:
        - Si estás en Windows 3.11, basta con mirar el fichero ODBC.INI, por
ejemplo, abriéndolo a bajo nivel, y comprobando que una de las entradas es
la de la DSN que buscas.
        - Si estás en Win32, puedes hacer la la misma operación, o -lo que
es más recomendable- mirar en el Registro. (Como ya sabes, al tratarse de
una entrada especial de registro, tienes que usar las API RegOpenKey y
RegOpenKeyEx).

>Y para registrar el DSN, supongo que se debe hacer por API pero desconozco
>cuales y su uso. Asi que, si son tan amables, me podrian dar ejemplos???

2º Problema. Para registrar tú mismo una DSN.

        - Si estás trabajando con DAO, no queda más remedio que usar una
función del API de ODBC 2.0 SQLCreateDataSource.

        -Si trabajas con RDO, lo tienes más fácil, ya que todo lo que tienes
que hacer es utilizar la función de RDO rdoRegisterDataBase, que requiere
como parámetros (entre otros), el nombre de la nueva DSN y la Base de Datos
a conectar.

Espero que te sirva.
Un saludo.
Marino
www.eidos.es



Matias Owsianik wrote:
>
> Hola a todos los listeros,
> Hace meses que estoy suscripto a la lista, y esta es mi segunda pregunta.
> Espero tener mejor suerte, puesto que la primera no tuvo respuesta alguna.
> Solo un comentario de Guille.
>
> Estoy corrigiendo una aplicación que accede a una base de datos Access por
> medio de ODBC. El tema es que la aplicacion debe ser instalada en varias
> estaciones de trabajo y el DSN que utiliza no existe en todas ellas.
> Mi pregunta es: Como hacer desde visual basic para que la aplicacion
> verifique si existe el DSN en cuestion y en caso de que no exista que lo
> registre???
> Para verificar la existencia, supongo que una forma es invocar la conexion,
> si se produce un error es que no existe. Pero quizas hay otra forma mas
> "prolija".
> Y para registrar el DSN, supongo que se debe hacer por API pero desconozco
> cuales y su uso. Asi que, si son tan amables, me podrian dar ejemplos???
>
> Saludos,
> Matias
>
> --
> Matias Owsianik
> MODdeS - Desarrollo de Sistemas
> Tel.: +(54)-1-784-0607
> E-mail: owsianikm@okfm.com
> Web Comercial: http://www.okfm.com/moddes/
> Web Personal: http://www.geocities.com/SiliconValley/Heights/4363


Usa DBEngine.RegisterDatabase NombreDSN, _
    "Microsoft Access Driver (*.mdb)", True, Atribs

donde NombreDSN es una cadena con el nombre que llevará tu DSN, True es
la opción de no mostrar el cuadro de diálogo ODBC (en tu caso no te
interesa) y Attribs es una cadena donde indicas las propiedades de la
base de datos. Si usas rdo, puedes usar rdoEngine.RegisterDatabase.

Espero haberte sido de ayuda. Un saludo.



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com