Pregunta: | 2625 - COMO CREAR DSN ODBC PARA SQL SERVER DESDE CODIGO |
Autor: | enzo aranibar |
Por favor alguien me puede ayudar en crear conexion odbc para sql server desde codigo para no estar configurando en cada equipo el dsn en el panel de control. |
Respuesta: | L.I. Enrique Campos Gómez |
Puedes crearlo así:
'dentro de las declaraciones: Private Const REG_SZ = 1 'Constant for a string variable type. Private Const HKEY_LOCAL_MACHINE = &H80000002 Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _ "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _ phkResult As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _ "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _ ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal _ cbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" _ (ByVal hKey As Long) As Long 'dentro de una función: Dim DataSourceName As String Dim DatabaseName As String Dim Description As String Dim DriverPath As String Dim DriverName As String Dim LastUser As String Dim Regional As String Dim Server As String Dim lResult As Long Dim hKeyHandle As Long 'Especificar los parametros del DSN. DataSourceName = "Nombre_DSN" DatabaseName = "Nombre_DB" Description = "Descripcion_DSN" DriverPath = "C:\WINDOWS\SYSTEM32\SQLSRV32.dll" 'AQUI HABRIA QUE BUSCAR EL DIRECTORIO SYSTEM32 DE LAS MAQUINAS, ESTE EJEMPLO ES PARA WINDOWS XP LastUser = "sa" Server = "Nombre_Servidor" DriverName = "SQL Server" 'Crea la Llave del DSN lResult = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\" & _ DataSourceName, hKeyHandle) 'Establece las Variables del DSN lResult = RegSetValueEx(hKeyHandle, "Database", 0&, REG_SZ, _ ByVal DatabaseName, Len(DatabaseName)) lResult = RegSetValueEx(hKeyHandle, "Description", 0&, REG_SZ, _ ByVal Description, Len(Description)) lResult = RegSetValueEx(hKeyHandle, "Driver", 0&, REG_SZ, _ ByVal DriverPath, Len(DriverPath)) lResult = RegSetValueEx(hKeyHandle, "LastUser", 0&, REG_SZ, _ ByVal LastUser, Len(LastUser)) lResult = RegSetValueEx(hKeyHandle, "Server", 0&, REG_SZ, _ ByVal Server, Len(Server)) 'Cierra la nueva Llave del DSN. lResult = RegCloseKey(hKeyHandle) 'Abre "Origen de Datos (ODBC)" para mostrar el nuevo DSN 'Especifica el nuevo valor 'Cierra la Llave lResult = RegCreateKey(HKEY_LOCAL_MACHINE, _ "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", hKeyHandle) lResult = RegSetValueEx(hKeyHandle, DataSourceName, 0&, REG_SZ, _ ByVal DriverName, Len(DriverName)) lResult = RegCloseKey(hKeyHandle) |
Respuesta: | Victor Saldivia |
Solo se puede si ocupas una conexion RDO. ´ Crear cadena de palabras clave. strAttribs = "Description=" _ & "SQL Server" _ & Chr$(13) & "UID=<ID>" _ & Chr$(13) & "PWD=<PWD>" _ & Chr$(13) & "SERVER=<SERVER>" ´ Crea un nuevo DSN o vuelve a registrarlo. rdoEngine.rdoRegisterDataSource <DSN>, _ "SQL Server", True, strAttribs |