Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Modificar DSN de Sistema

Estas en el tema de Modificar DSN de Sistema en el foro de Visual Basic clásico en Foros del Web. Bueno, primero espero estar a la altura en cuanto a mi redacción, no vaya a ser que MAX me eche a los leones Creo un ...
  #1 (permalink)  
Antiguo 25/05/2005, 08:17
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 109
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta Modificar DSN de Sistema

Bueno, primero espero estar a la altura en cuanto a mi redacción, no vaya a ser que MAX me eche a los leones

Creo un DSN de sistema por código para conectarme a una base de datos MySQL que está en otro pc.

Código:
Sub crearDSN()

Dim dl As Long                                 ' Valor devuelto por la función API
Dim sAttributes As String                  ' Aributos
Dim sDriver As String                       ' Nombre del controlador
Dim sDescription As String                ' Descripción del DSN
Dim sDsnName As String                  ' Nombre del DSN

On Error GoTo errorDSN

' Establecemos los atributos necesarios
sDsnName = "HDPU"
sDescription = "DSN de sistema para MySQL y HDPU"
sDriver = "MySQL ODBC 3.51 Driver"

' Los pares de cadenas acabarán en valor Null
sAttributes = "DSN=" & sDsnName & Chr(0)
sAttributes = sAttributes & "Server=" & strNombreServidor & Chr$(0)
sAttributes = sAttributes & "User=" & strUsuario & Chr$(0)
sAttributes = sAttributes & "Password=" & strPassword & Chr$(0)
sAttributes = sAttributes & "Description=" & sDescription & Chr(0)
sAttributes = sAttributes & "Database=" & nombreBDInformacion & Chr(0)

' Si deseamos utilizar la autenticación de Windows NT, deberemos de
' especificarlo en la cadena de atributos
sAttributes = sAttributes & "Trusted_Connection=True" & Chr(0)

' Creamos el nuevo origen de datos de usuario especificado.
' Si deseamos que aparezca el cuadro de diálogo, tendremos que
' especificar la propiedad «hWnd» del formulario donde se realiza
' la llamada a la función API.
dl = SQLConfigDataSource(vbAPINull, ODBC_ADD_SYS_DSN, sDriver, sAttributes)

If not dl Then
    MsgBox "Ha ocurrido un error mientras se creaba el DSN de Sistema para MySQL. Posiblemente necesite tener permisos de Aministrador en su máquina." & vbCrLf & "Consulte con el Aministrador de su equipo", vbCritical, "Error"
    End
End If

Exit Sub

'ERROR
errorDSN:
MsgBox "Ha ocurrido un error mientras se creaba el DSN de Sistema para MySQL. Posiblemente necesite tener permisos de Aministrador en su máquina." & vbCrLf & "Consulte con el Aministrador de su equipo", vbCritical, "Error"
End

End Sub
y luego hago la conexión

Código:
oConexionInformacion.CursorLocation = adUseClient
oConexionInformacion.Open "DSN=HDPU"
esto funciona

El problema es cuando quiero cambiar de base de datos, ya que según a mi entender, lo único que hay que hacer sería cerrar la conexión, modificar el DSN y volver a abrir la conexión, pero no funciona como debería por algún problema de refresco.
Haciendo debug con F8, veo como modifica el DSN con los atributos nuevos (otra base de datos) y lo crea bien porque lo compruebo entrando en panel de control.... etc
Código:
Sub modificarDSN()
Dim dl As Long                            ' Valor devuelto por la función API
Dim sAttributes As String             ' Aributos
Dim sDriver As String                 ' Nombre del controlador
Dim sDsnName As String             ' Nombre del DSN

Const ODBC_CONFIG_SYS_DSN As Long = 5     ' Se modificará un DSN de sistema

' Establecemos los atributos necesarios
sDsnName = "HDPU"
sDriver = "MySQL ODBC 3.51 Driver"

' Los pares de cadenas acabarán en valor Null
sAttributes = "DSN=" & sDsnName & Chr(0)
sAttributes = sAttributes & "Server=" & strNombreServidor & Chr$(0)
sAttributes = sAttributes & "User=" & strUsuario & Chr$(0)
sAttributes = sAttributes & "Password=" & strPassword & Chr$(0)
sAttributes = sAttributes & "Database=" & nombreBDInformacion & Chr(0)

' Modificamos el origen de datos de usuario especificado
dl = SQLConfigDataSource(0&, ODBC_CONFIG_SYS_DSN, sDriver, sAttributes)

If not dl Then
    MsgBox "Ha ocurrido un error mientras se creaba el DSN de Sistema para MySQL. Posiblemente necesite tener permisos de Aministrador en su máquina." & vbCrLf & "Consulte con el Aministrador de su equipo", vbCritical, "Error"
    End
End If
End Sub
pero cuando vuelvo a abrir la conexión

Código:
If oConexionInformacion.State = adStateOpen Then
        oConexionInformacion.Close
End If
oConexionInformacion.CursorLocation = adUseClient
oConexionInformacion.Open "DSN=HDPU"
sigue manteniedo alguna referencia antigua al DSN porque no actualiza los atributos que he modificado.

¿Le ha pasado esto a alguien?

salu2 y gracias
__________________
Lo importante no es saber, sino tener el teléfono del que sabe :risa:
  #2 (permalink)  
Antiguo 26/05/2005, 10:13
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 109
Antigüedad: 20 años, 5 meses
Puntos: 0
ya está, era un problema de refresco
__________________
Lo importante no es saber, sino tener el teléfono del que sabe :risa:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:55.