Como Ver el nombre del Servidor SQL Server

Hola Experto! Recurro a vos a para ver si me puedes aclarar un tema...
Estoy haciendo una Aplicación que vea las Instancias de conexión SQL de otros Programas (por ejemplo TANGO GESTIÓN). Lo Necesito ver desde código Fox.
Osea que pueda instalar el sistemita y desde un INgreso Administrador tenga la Posibilidad de Poder ver el nombre del Servidor SQL SERVER y el Nombre del ODBC.
Espero Puedas Ayudarme!
Saludos Maxi!

1 respuesta

Respuesta
1
La verdad no entiendo exactamente lo que querés hacer.
Te paso unos códigos que te pueden ayudar:
Listar los drivers ODBC instalados
Crear una nueva conexión ODBC
DECLARE INTEGER SQLConfigDataSource IN ODBCCP32.dll INTEGER hwndParent, INTEGER fRequest, STRING lpszDriver, STRING lpszAttributes
Driver = "MySQL ODBC 3.51 Driver"
sCad = 'DSN=<Nombre de conexión>' + CHR(0) + 'server=<nombre o ip del server>' + CHR(0) + 'database=<nombre de la base>' + CHR(0) + 'port=<número de puerto>' + CHR(0)


=SQLConfigDataSource(0, 1, Driver, sCad)

Listar las conexiones ODBC existentes en el equipo (fuente: Microsoft MSDN)
#DEFINE SQL_FETCH_NEXT 1
#DEFINE SQL_FETCH_FIRST 2
#DEFINE SQL_SUCCESS 0
#DEFINE MAX_STRING 128
DECLARE INTEGER SQLDataSources IN ODBC32.DLL ;
      INTEGER henv, SHORT fdirection, ;
      STRING @szDSN, INTEGER cbDSNMax, ;
      INTEGER @pcbDSN, STRING @szDescription, ;
      INTEGER cbDescriptionMax, INTEGER @pcbDescriptionn
hEnv = VAL(SYS(3053))      && The hEnv (converted to a number)
cbDsnMax = MAX_STRING      && How long can the DSN Name be?
pcbDSN = 0                 && How many were actually returned
cbDescriptMax = MAX_STRING && How long can the description be?
pcbDescript = 0            && How long the description actually was
fDirection = SQL_FETCH_FIRST     && The first time start at the top
retVal = SQL_SUCCESS             && Start with no errors
DO WHILE (retVal = SQL_SUCCESS)
   szDsn = SPACE(MAX_STRING+1)   && Make sure there is enough space
   szDescript = SPACE(MAX_STRING+1)
   retval = SQLDataSources(hEnv, fDirection, ;
                  @szDSN, cbDSNMax, @pcbDSN, ;
                  @szDescript, cbDescriptMax, @pcbDescript)
  ? LEFT(szDSN, pcbDSN)
  ? LEFT(szDescript, pcbDescript)
   * We only want to do the SQL_FETCH_FIRST the first time
   fDirection = SQL_FETCH_NEXT
ENDDO

Si nada de esto te sirve es porque no entendí NADA de tu pregunta ! Je...
Cualquier cosa volvé a preguntar.
jaja por lo que veo entendiste bastante de mi pregunta porque casi me la resolviste... ahora tengo una pequeña duda. ¿Cómo hago para poner la lista de los ODBC que me pasaste en una grilla?.
Y por ultimo, lo que te decía del SQL SERVER es que si sabes de alguna manera que mediante Fox Pueda saber cual es el Nombre del Servidor SQL Server. Cuando Vos Instalas sql server te Pide que declares el Nombre del Servidor y la Instancia.
Espero que me Puedas ayudar maxi.
Abrazo
Me alegro que haya entendido.
Para tu primera pregunta, lo que tenés que hacer es, en lugar de
¿? LEFT(szDSN, pcbDSN)
  ? LEFT(szDescript, pcbDescript)

Que te imprime los datos de la conexión, tendrías que guardártelos en un cursor creado por vos. Al principio de tu código te creas el cursor así:
CREATE CURSOR listaODBC (DSN C(200), Descrip M)
Y en el código que yo te pasé, poné:
INSERT INTO listaODBC (DSN, Descrip) VALUES (LEFT(szDSN, pcbDSN), LEFT(szDescript, pcbDescript)

En lugar de los prints (?) Y listo.
Con respecto a tu segunda pregunta lamentablemente no te voy a poder ayudar. Nunca lo tuve que hacer.
Suerte !
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">#DEFINE SQL_FETCH_NEXT 1
#DEFINE SQL_FETCH_FIRST 2
#DEFINE SQL_SUCCESS 0
#DEFINE MAX_STRING 128
DECLARE INTEGER SQLDataSources IN ODBC32.DLL ;
      INTEGER henv, SHORT fdirection, ;
      STRING @szDSN, INTEGER cbDSNMax, ;
      INTEGER @pcbDSN, STRING @szDescription, ;
      INTEGER cbDescriptionMax, INTEGER @pcbDescriptionn
hEnv = VAL(SYS(3053))      && The hEnv (converted to a
number)
cbDsnMax = MAX_STRING      && How long can the DSN Name be?
pcbDSN = 0                 && How many were actually
returned
cbDescriptMax = MAX_STRING && How long can the description
be?
pcbDescript = 0            && How long the description
actually was
fDirection = SQL_FETCH_FIRST     && The first time start at
the top
retVal = SQL_SUCCESS             && Start with no errors
DO WHILE (retVal = SQL_SUCCESS)
   szDsn = SPACE(MAX_STRING+1)   && Make sure there is
enough space
   szDescript = SPACE(MAX_STRING+1)
   retval = SQLDataSources(hEnv, fDirection, ;
                  @szDSN, cbDSNMax, @pcbDSN, ;
                  @szDescript, cbDescriptMax, @pcbDescript)
   ? LEFT(szDSN, pcbDSN)
   ? LEFT(szDescript, pcbDescript)
   * We only want to do the SQL_FETCH_FIRST the first time
   fDirection = SQL_FETCH_NEXT
ENDDO
</div>
Perfecto maxi! Muchas gracias me sirvió muchísimo.. te agradezco
En cualquier momento voy a estar molestándote con la macrosustitución... según me dicen me va a servir mucho y la verdad que no encuentro conceptos claros.
Abrazo!
gabriel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas