Visual Basic.NET - Generar ODBC por grama en .NET

   
Vista:

Generar ODBC por grama en .NET

Publicado por apacheco (78 intervenciones) el 24/12/2009 13:20:19
Buenos dias (al menos en España).

Estoy migrando una aplicacion de VB6 a 2008.Net en Windows XP, en la que creaba unas entradas en el registro de Windows XP, con datos relativos a ala direccion de la BD. ...etc.

Los pasos realizados son :
Crear en el registro (HKEY_CURRENT_USER\Software\VB and VBA Program Settings\) las entradas Textilnet y dentro de esta TExistencias. Lo hace bien

Consigo, con el OpenFileDialog localizar la ubicacion del a BD, pero al utilizar la API (SQLConfigDataSource....) que genera el ODBC me da un error diciendo :

Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.

He testado la memoria y no me ha indicado ninguna incidencia.

¿Podeis decirme algo?...... algun otro metodo de crear dinamicamente un OBDC.

Si ejecuto el programa original en VB6 FUNCIONA CORRECTAMENTE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Generar ODBC por grama en .NET

Publicado por Jonny (1 intervención) el 31/08/2011 15:36:44
Yo tube el mismo inconveniente tuyo cuando intente modificar el dns SQLConfigDataSource

La solución:

Cuando lo ejecutaba en un windows 7 de 64 bits me funcionaba bien ya que en el momento de declarar la función
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

esto funciona ya que si es Long quiere decir que es de 64 bits, cuando lo fui a ejecutar en un xp de 32 Bits me aparecia el error, entonces lo que hize fue modificar el tipo de dato de la funcion asi:

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Int32, ByVal fRequest As Int32, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) _
As Int32


y en el momento de llamar la funcion el primer parametro debe ser 0 que significa que es de 32 bits


CreateDSN = SQLConfigDataSource(0, ODBC_CONFIG_SYS_DSN, _
Driver, Attributes)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar