… que también puedes crear un DSN del sistema mediante código.
¿Qué por qué lo digo?
Bueno… el caso es que estaba leyendo algunas preguntas del foro de Velneo antes de irme a dormir y la única que he visto con cero respuestas la hacía un compañero que firmaba como RAM (¡igual es el diminutivo de Ramiro porque seguro que estaréis pensando que tiene algo que ver con las memorias…!). Leo el título y mecachis… «Odbc.dll«.
Coñe, si era precisamente de lo que hablé en una de las últimas entradas y también, precisamente, el compañero preguntaba un tema que no salió pero que perfectamente, de haberlo pensado, lo hubieramos comentado. ¿Recordais que en dicha entrada «Atrevete a conocer a Velneo. Parte 2» compartiamos un pequeño video donde creabamos un DSN de Sistema desde el panel de control?.
Veamos… Es muy tarde y estoy agotado, pero vamos a dar unas pinceladas para que RAM encuentre la información. 🙂
En primer lugar, vamos a ver que pasos podríamos seguir…
El primero podria ser averiguar que función nos va a permitir que podamos crear el DSN. Así que tras una pequeña busqueda en Internet hemos averiguado que existe una libreria ODBCCP32.DLL, que exporta una función que podemos invocar para obtener nuestro proposito. Esta función es SQLConfigDataSource.
Así que en este punto, podrías repasar la entrada Primeros pasos tras el curso… en la que hablabamos de como declarar nuestra librería en el entorno de Velneo para luego poder utilizarla desde una función o un proceso.
Veamos la cabecera de la función:
function SQLConfigDataSource(hwndParent: HWND; fRequest: WORD; lpszDriver: LPCSTR; lpszAttributes: LPCSTR): BOOL; stdcall; external 'ODBCCP32.DLL';
Nos faltaría saber que debemos indicar en cada parámetro:
hwndParent -> Hace referencia al handle o manejador. Podemos pasarle el valor cero (0).
fRequest -> Hace referencia al tipo de operación y existen definidas a tal efecto un grupo de constantes.
Un segundo… que las vamos a detallar:
- Añadir un DSN ->ODBC_ADD_DSN = 1
- Editarlo ->ODBC_CONFIG_DSN = 2
- Eliminar un DSN ->ODBC_REMOVE_DSN = 3
- Añadir una DSN de sistema ->ODBC_ADD_SYS_DSN = 4
- Modificar un DSN de sistema ->ODBC_CONFIG_SYS_DSN = 5
- Eliminar un DSN de Sistema ->ODBC_REMOVE_SYS_DSN= 6;
Finalmente, los parametros lpszDriver, lpszAttributes harían referencia a la cadena que identifica al driver y a la cadena de atributos de la que nos valemos para configurarlo. Dicha cadena es diferente en función del tipo de driver que consideremos. En el caso por ejemplo de una base de datos de Access, el parámetro driver podria ser semejante a la cadena: ‘Microsoft Access Driver (*.mdb)’. Y en cuanto a los atributos, la cadena de texto debería enlazar un conjunto de pares de atributos/valor, algunos como los siguientes:
UID=miUsuario
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:MisProyectosbbdd
DBQ=C:MisProyectosbbddmiBaseDeDatos.mdb
Un forma que os permitiría saber que atributos podeis necesitar para crear vuestra conexión, podría ser la de crear un fichero DSN y para ello, deberíais abrir el Panel de Control -> Herramientas Administrativas -> Origenes de Datos y añadir un nuevo fichero haciendo clic en ADD, que os permitirá, una vez elegido el driver y los valores de conexión, generar un fichero con extensión DSN que contiene los atributos comentados y que puede ser utilizado para crear una conexión.
El resto ya es un poco en función de pasar mas o menos trabajo parametrizando las funciones de Velneo, para permitiros añadir/modificar o borrar un DSN tanto de Usuario como de Sistema.
Espero Ram que te pueda ayudar.
Aquí te dejo unos enlaces que apuntan algunos documentos de microsoft en los que se comenta el tema y que estoy seguro que te ayudaran a introducir la creación de DSN mediante código desde tus mapas de Velneo.
XL: How to Use File DSNs and DSN-less Connections
🙂
Ahora sí que me voy a dormir… 😉
Comentarios recientes