ODBC con SQLConfigDataSource
Estoy necesitando crear una Origen de datos ODBC con SQLConfigDataSource desde FoxPro.
El problema es que le quiero indicar cuando debe utilizar el protocolo TCP/IP o cuando Canalización por nombre (named Pipes)
Hago lo siguiente
DECLARE INTEGER SQLConfigDataSource IN odbccp32;
INTEGER hwndParent,;
INTEGER fRequest,;
STRING lpszDriver,;
STRING lpszAttributes
ldsn=ALLTRIM(thisform.Pageframe1.Page1.descripcion.Value)
lUser=ALLTRIM(thisform.Pageframe1.Page2.txtuser.Value)
lPassword=ALLTRIM(thisform.Pageframe1.Page2.txtpass.Value)
lBase=ALLTRIM(thisform.Pageframe1.Page3.CmbBaseSel.Value)
lserver=ALLTRIM(thisform.Pageframe1.Page1.cmbServer.Value)
llenguaje='spanish'
lAutenWinNt=thisform.Pageframe1.Page2.chkSegWinNT.Value
lProtocolo="Network="+IIF(thisform.Pageframe1.Page3._optiongroup1.Value=1,'dbnmpntw','dbmssocn')+ Chr(0)
#DEFINE ODBC_ADD_DSN 1
#DEFINE ODBC_REMOVE_DSN 3
LOCAL lcDriver ,lcAttribs
*** Remueve el DSN anterior
lcDriver = "SQL Server"
lcAttribs = "DSN="+ALLTRIM(ldsn) + Chr(0)
nReturnValue = SQLConfigDataSource(0, ODBC_REMOVE_DSN, lcDriver, lcAttribs)
*** Crea el DSN
lcDriver = "SQL Server"
lcAttribs = "SERVER="+ALLTRIM(lserver)+ Chr(0)
lcAttribs = lcAttribs + "DESCRIPTION=Sistema de Gestion" + Chr(0)
lcAttribs = lcAttribs + "DSN="+ALLTRIM(ldsn) + Chr(0)
IF !Empty(llenguaje)
lcAttribs = lcAttribs +"Language="+ALLTRIM(llenguaje)+Chr(0)
ENDIF
lcAttribs = lcAttribs +lProtocolo
lcAttribs = lcAttribs +"DATABASE="+ALLTRIM(lBase) + Chr(0)
IF lAutenWinNt
lcAttribs = lcAttribs +"Trusted_Connection=Yes" + Chr(0)
ENDIF
nReturnValue = SQLConfigDataSource(0, ODBC_ADD_DSN, lcDriver, lcAttribs)
If nReturnValue = 1
Messagebox("System created",64,"SUCCESS")
Else
Messagebox("System creation failed",64,"ERROR")
ENDIF
El problema es que NO me da error, crea el origen de datos, pero queda como TCP/IP y no por Named Pipes cuando se lo indico..
El problema es que le quiero indicar cuando debe utilizar el protocolo TCP/IP o cuando Canalización por nombre (named Pipes)
Hago lo siguiente
DECLARE INTEGER SQLConfigDataSource IN odbccp32;
INTEGER hwndParent,;
INTEGER fRequest,;
STRING lpszDriver,;
STRING lpszAttributes
ldsn=ALLTRIM(thisform.Pageframe1.Page1.descripcion.Value)
lUser=ALLTRIM(thisform.Pageframe1.Page2.txtuser.Value)
lPassword=ALLTRIM(thisform.Pageframe1.Page2.txtpass.Value)
lBase=ALLTRIM(thisform.Pageframe1.Page3.CmbBaseSel.Value)
lserver=ALLTRIM(thisform.Pageframe1.Page1.cmbServer.Value)
llenguaje='spanish'
lAutenWinNt=thisform.Pageframe1.Page2.chkSegWinNT.Value
lProtocolo="Network="+IIF(thisform.Pageframe1.Page3._optiongroup1.Value=1,'dbnmpntw','dbmssocn')+ Chr(0)
#DEFINE ODBC_ADD_DSN 1
#DEFINE ODBC_REMOVE_DSN 3
LOCAL lcDriver ,lcAttribs
*** Remueve el DSN anterior
lcDriver = "SQL Server"
lcAttribs = "DSN="+ALLTRIM(ldsn) + Chr(0)
nReturnValue = SQLConfigDataSource(0, ODBC_REMOVE_DSN, lcDriver, lcAttribs)
*** Crea el DSN
lcDriver = "SQL Server"
lcAttribs = "SERVER="+ALLTRIM(lserver)+ Chr(0)
lcAttribs = lcAttribs + "DESCRIPTION=Sistema de Gestion" + Chr(0)
lcAttribs = lcAttribs + "DSN="+ALLTRIM(ldsn) + Chr(0)
IF !Empty(llenguaje)
lcAttribs = lcAttribs +"Language="+ALLTRIM(llenguaje)+Chr(0)
ENDIF
lcAttribs = lcAttribs +lProtocolo
lcAttribs = lcAttribs +"DATABASE="+ALLTRIM(lBase) + Chr(0)
IF lAutenWinNt
lcAttribs = lcAttribs +"Trusted_Connection=Yes" + Chr(0)
ENDIF
nReturnValue = SQLConfigDataSource(0, ODBC_ADD_DSN, lcDriver, lcAttribs)
If nReturnValue = 1
Messagebox("System created",64,"SUCCESS")
Else
Messagebox("System creation failed",64,"ERROR")
ENDIF
El problema es que NO me da error, crea el origen de datos, pero queda como TCP/IP y no por Named Pipes cuando se lo indico..