Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CREAR DSN POR CODIGO VFP

453 views
Skip to first unread message

Jesus Rojas

unread,
Jul 24, 2003, 11:41:37 AM7/24/03
to
Hola a todos
 
Quisiera crear un DNS de sistema por medio de codigo, tengo entendido que se puede hacer por medio de API, pero lo que deseo es lo siguiente :
 
1. Verificar si existe el DSN de sistema
2. Si no existe el DSN de sistema crealo automaticamente.
 
Por favor si pueden colocar el código y como usarlo, sería excelente.
 
PD: Estoy trabajando Visual fox pro con SQL Server 2000
 
Muchas Gracias
 
Salu2 desde Perú
 
Jesús Rojas Cárdenas
Analista - Programador
Lima-Perú
 

Víctor B.

unread,
Jul 24, 2003, 12:32:54 PM7/24/03
to
En una parte de  i programa uso la siguiente rutina, sé que no es muy elegante per funciona:
 
 * Se crea un objeto de la clase ODBCReg que hereda todo de la clase Registry. Esta clase está
 * implementada en el fichero 'Registry.prg'.
 oRegi=NEWOBJECT("ODBCReg", "Registry.prg")
 DIMENSION aTrab(1,2)
 * Se comprueban los drivers ODBC instalados.
 oRegi.GetODBCDrvrs(@aTrab)
 * Se comprueba si el driver de Visual FoxPro está en la lista.
 nH=ASCAN(aTrab, "Microsoft Visual FoxPro")
 IF nH==0  && Si no lo está...
  =MESSAGEBOX("No tiene instalado el controlador de Visual FoxPro para ODBC",16,"Comprobaciones Iniciales")
  RETURN .F.  && Se sale del programa
 ENDIF
 * Si existe el driver de Visual FoxPro se obtiene el nombre de la DLL.
 oRegi.GetRegKey( "Driver",@sDriver,"Software\ODBC\ODBCINST.INI\"+aTrab(nH),HKEY_LOCAL_MACHINE)
 DIMENSION aTrab(1,2)
 ADEL(aTrab,1)
 ADEL(aTrab,1,2)
 * Se comprueba si existe un origen de datos (DSN de sistema) llamado 'T_General'.
 oRegi.GetODBCDrvrs(@aTrab,.T.)
 nH=ASCAN(aTrab, "T_General")
 IF nH==0  && Si no existe se crea como un DSN de sistema.
 DECLARE Integer SQLConfigDataSource IN odbccp32.dll Integer, Short, String @, String @
 
 #DEFINE ODBC_ADD_SYS_DSN  4
 
 lc_driver = "Microsoft Visual FoxPro Driver" + CHR(0)
 lc_dsn = "dsn=T_General" + CHR(0) + "BackgroundFetch=Yes" + CHR(0) + ;
 "Description=Conexion al servidor de EnmarcaWin" + CHR(0) + "Exclusive=No" + CHR(0) +;
 "SourceDb=C:\IPE\DATOS\GENERAL.DBC"+ CHR(0) +;
 "Sourcetype=DBC" +CHR(0)+"Deleted=Yes"+CHR(0)+"Null=Yes"
 IF SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, @lc_driver, @lc_dsn) = 1
  RETURN .T. && OK
 ENDIF
 RETURN .F. && error
"Jesus Rojas" <jesusr...@hotmail.com> escribió en el mensaje news:u59RsofU...@TK2MSFTNGP09.phx.gbl...

Jorge Mota

unread,
Jul 24, 2003, 12:43:09 PM7/24/03
to
http://www.portalfox.com/article.php?sid=664

On Thu, 24 Jul 2003 10:41:37 -0500, Jesus Rojas <jesusr...@hotmail.com>
wrote:

--
Jorge Mota

Do It Best, Do it With VFP.

Jesus Rojas

unread,
Jul 25, 2003, 4:29:31 PM7/25/03
to
Victor
 
He estado probando tu codigo y me sale error en la linea :
oRegi.GetRegKey( "Driver",@sDriver,"Software\ODBC\ODBCINST.INI\"+aTrab(nH),HKEY_LOCAL_MACHINE)
 
Ya que la variable sDriver, la cual se manda como segundo parámetro en la clase Registry no se ha definido en ningun momento, mas bien me gustaria saber que valor tiene esta para que funcione bien, ya que en esta linea se ha quedado
 
Muchas Gracias.
 
Salu2 desde Perú
 
Jesús Rojas Cárdenas
Analista Programador
       Lima-Perú
 
 
 
"Víctor B." <enm...@enmarcawin.com> escribió en el mensaje news:%23HmJvFg...@tk2msftngp13.phx.gbl...
0 new messages