SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: lunnaticoo en Viernes 3 de Octubre de 2008, 18:19
-
Hola..
Resulta que encontré un código en este foro en la sección v.6.0 para crear una conexión DNS por código, bueno, probé el código en v6.0 y funciona, pero al momento de implementarlo en v.net este se cae y no se cual es el error, me podrían ayudar, es urgente...
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
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
Const ODBC_ADD_SYS_DSN As Long = 4 ' Se creará un DSN de sistema
Const vbAPINull As Long = 0& ' Puntero NULL
' Establecemos los atributos necesarios
sDsnName = "Ejemplo_DSN_Sistema"
sDescription = "Nuevo DSN de sistema para SQL Server"
sDriver = "SQL Server"
' Los pares de cadenas acabarán en valor Null
sAttributes = "DSN=" & sDsnName & Nothing
sAttributes = sAttributes & " Server=(Local)" & Chr(0)
sAttributes = sAttributes & " Description=" & sDescription & Chr(0)
sAttributes = sAttributes & " Database=pubs" & 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 dl Then
MsgBox("Se ha creado el DSN de sistema.")
Else
MsgBox("No se ha podido crear el DSN de sistema.")
End If
End Sub
-
No he mirado el código, PORQUE si un código funciona en VB 6 debes convertirlo desde Vs 2005 como primera medida y luego hacer los cambios manuales que se requieran...
Si el código funcionó perfectamente en vb 6.0 entonces cierra el proyecto en vb 6.0 abre vs 2005-08 elige abrir proyecto, busca ESE proyecto en vb 6.0 y dale OK te dirá que si deseas importar el código desde la versión anterior le dices que si y que muestra un resumen de lo realizado. Si el código es 100% sustituíble deberá funcionar, si no es 100% sustituíble verás que te habrá señalado en el código unas razones y un enlace que explican más profundamente la razón, has los cambios que se deducen de las razones explicadas y listo.
Adicionalmente y opcionalmente deberías cambiar de modo manual alguna cosa que siendo coherente en la conversión de código no es pertienente ya dado unos cambios operados.
Si después de eso no funciona entonces envía aqué cófigo y ya se mirará en profundidad.
-
Gracias Nebire ..
El error estaba en las variables definidas como LONG, habia q cambiarlas a integer..
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Integer