crear ODBC vía código

Danysan
29 de Noviembre del 2005
Por favor alguien que me ayude, necesito crear un ODBC vía código visual basic .net, capaz de crear un DSN de Sistema desde mi programa para Access.

gracias

gabrield
29 de Noviembre del 2005
Estimado/a Danysan

El siguiente código llama a una API de windows para crear un ODBC para access. Está en VFP8.0, pero será sencillo transformarlo hacia VB.NET.
Ten en cuenta que las líneas que comienzan con * son de comentario y que un punto y coma (;) indica que la línea sigue debajo. Casi solo deberás cambiar la declaración de la API, que sería algo así

Declare Function SQLConfigDataSource Lib ODBCCP32 (ByVal hwndParent AS Integer,ByVal fRequest AS Integer, ByVal lpszDriver as String, ByVal lpszAttributes as String

PROCEDURE CrearODBCAccess
*CREA EL ORIGEN DE DATOS "prueba" PARA BASES DE DATOS Access
LOCAL lcDriver, lcAttributes, llRetVal, lnIsAdded
*!* Instrucciones DECLARE DLL para manipular DataSources
DECLARE INTEGER SQLConfigDataSource IN ODBCCP32.dll INTEGER hwndParent,;
INTEGER fRequest, STRING lpszDriver, STRING lpszAttributes
*!* Valores

*'DSN=DataBase MDB' + CHR(0) + 'Description=Access ODBC Driver' +;
* CHR(0) + 'uid=' + CHR(0) + 'pwd=' + CHR(0) + 'DBQ=datos.mdb'
lcDriver = "Microsoft Access Driver (*.mdb)" + CHR(0)
lcAttributes = ;
"DSN=abalt" + CHR(0) +;
"Description=NOMBRE DEL ODBC" + CHR(0) +;
"uid=" + CHR(0) +;
"pwd=" + CHR(0) +;
"DBQ=RUTA COMPLETA DE LA BASE DE DATOS"
'*!* Agregar el nuevo DataSource DNS
lnIsAdded = SQLConfigDataSource(0, 1, lcDriver, lcAttributes)
'*!* Valores
llRetVal = (lnIsAdded = 1)
*!* Retorno
RETURN llRetVal
IF llRetVal=.f.
MESSAGEBOX("No es posible crear el controlador ODBC."+CHR(13)+;
"Comuníquese con el servicio técnico.",16,"Error de inicialización")
ENDIF
ENDPROC

Saludos cordiales
Gabriel Dameñov
www.gdmsargentina.com.ar