Crear un DSN de Sistema desde un programa VB

Gusto en saludarte. Mi nombre es Eduardo soy programador en
Visual Basic 6.0. Te cuento que tengo el siguiente problema y
Agradezco cualquier ayuda al respecto. - Todos los programa que
Realizo acostumbro enlazarlos a la base de datos mediante Código ADO
Que hace referencia al DSN de Sistema previamente creados de forma
Manual en panel de control del equipo; mi pregunta es: ¿Conoces por
Casualidad alguna sentencia de Visual Basic (ó al menos cuales son los
Archivos de Windows que debo modificar mediante programa) para lograr
Crear un DSN de Sistema llamado: "DSN_PRUEBA" que apunte a la
¿Siguiente base de datos de access "C:\Prueba.mdb"?. Necesito
Averiguar esto para incluirlo en una rutina de instalación que libere
Al Usuario de la labor de crear los DSN que necesiten los programas.
He probado otras alternativas como: crear DSN de ARCHIVO y
Trasladarlos al nuevo equipo, pero el problema es que en ocasiones
Trabajo con DSN que apuntan a librerías del AS/400 para los cuales no
Se puede usar DSN de Archivo y esto me limita. En vista de todo esto
Necesito aprender a crear orígenes de datos de sistema mediante
Programa.
Agradezco tu respuesta o la de cualquier otro amigo(a) experto o
Usuario que me pueda dar una luz al respecto.

2 respuestas

Respuesta
1
En un módulo declara esta API:
Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
'declaracion de constantes
Public Const ODBC_ADD_DSN = 1 'Agregar origen de datos
Public Const ODBC_CONFIG_DSN = 2 'Configurar (modificar) origen de datos
Public Const ODBC_REMOVE_DSN = 3 'Quitar origen de datos
Public Const ODBC_ADD_SYS_DSN = 4 'Agregar origen de datos DE SISTEMA
Public Const ODBC_CONFIG_SYS_DSN = 5 'Configurar (modificar) origen de datos DE SISTEMA
Public Const ODBC_REMOVE_SYS_DSN = 6 'Quitar origen de datos DE SISTEMA
Para usar la API crea una función del tipo a:
Function MantenimientoDSN(strDriver As String, Nombre As String, Descripcion As String, Path As String, USUARIO As String, Contraseña As String, Operacion As Long, SoloLectura As Boolean) As Boolean
Const vbAPINull As Long = 0& ' NULL Pointer
#If Win32 Then
Dim intRet As Long
#Else
Dim intRet As Integer
#End If
Dim strAttributes As String
strDriver = "Microsoft Access Driver (*.mdb)"
'Asignamos los parametros separados por null.
strAttributes = "SERVER=" & Chr$(0)
strAttributes = strAttributes & "DESCRIPTION=" & Descripcion & Chr$(0)
strAttributes = strAttributes & "DSN=" & Nombre & Chr$(0)
strAttributes = strAttributes & "DBQ=" & Path & Chr$(0)
strAttributes = strAttributes & "UID=" & USUARIO & Chr$(0)
strAttributes = strAttributes & "PWD=" & Contraseña & Chr$(0)
strAttributes = strAttributes & "Readonly=" & CInt(SoloLectura) & Chr$(0)
'Para mostrar el diálogo usar Form1.Hwnd en vez de vbAPINull.
intRet = SQLConfigDataSource(vbAPINull, Operacion, strDriver, strAttributes)
If intRet Then
MantenimientoDSN = True
Else
MantenimientoDSN = False
End If
End Function
'ejemplo del uso para access
Private Sub Command1_Click()
If MantenimientoDSN("Microsoft Access Driver (*.mdb)", "DSN_PRUEBA", "", "C:\Prueba.mdb", "", "", ODBC_ADD_SYS_DSN, False) Then
MsgBox "DSN Creada"
Else
MsgBox "ERROR AL CREAR DSN"
End If
End Sub
Puedes crear, modificar o eliminar un ODBC de sistema o usuario dependiendo del valor del parámetro Operación de la función MantenimientoDSN.
Hola xabi, me funcionó como decimos aquí en Venezuela AL PELO, GRACIAS...
¿Y te agradecería si no es mucha molestia y está a tu alcance me ayudes a modificarlo para crear un DSN que se conecte al AS/400. Puedes?.
El caso es el siguiente yo me conecto al AS/400 mediante dos(02) aplicaciones "Client Access" y otra llamada "RUMBA" que usan los siguientes Drives respectivamente: Client Access ODBC Driver (32-bit) y RUMBA AS/400 Optimized Server (32-bit) o RUMBA DRDA-32
Como comprenderá en el AS/400 no tengo rutas de archivos como en access (C:\basedato.mdb) lo que si tengo son librerías. Mi pregunta es: como hago para apuntar mi DSN_PRUEBA ahora a una librería del AS/400 llamada "PRUEBA_AS400".
Agradezco mucho que te hayas tomado la molestia de ubicarme el código exacto a mis necesidades con Access y si lo que te pido en esta oportunidad escapa de tus manos te agradezco me lo informes porque de cualquier forma mi valoración será de 5 estrellas a la hora de cerrar esta pregunta. Muy agradecido.
Ok gracias tal como te dije tu respuesta anterior fue de gran utilidad para mi.
Siento no poder ayudarte con AS/400.
Respuesta
1
Checa la siguiente página:
http://www.planetsourcecode.com
En ella puedes encontrar varias aplicaciones de ejemplo para realizar o adecuar el código a tus necesidades.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas