La Web del Programador: Comunidad de Programadores
 
    Pregunta:  6852 - PROBLEMAS AL CONECTAR CON SQL SERVER
Autor:  German Espinoza
Hola programdores de la web del programador. Quiero me den una ayuda estoy realizando un programa desde Visual Basic 5.0
pero primero comense a probar el ejemplo del libro el Aupor es Alfonso gonzales y es de cliente servidor, el programa no da error pero no realiza la consulta de actualizacion
he buscado de todas forma y nada Bueno el libro dice que se conecta a una base de datos de Access a traves de la fuente de odbc y yo
la estoy haciendo a una fuente de odbc pero para una base de datos de SQL Server ya que ese es el programa es el que tengo en el servidor
y el codigoes el siguiente:

Dim rc As Integer
Dim db As Database
Dim henv As Long
Dim oSQLServer As Object
Dim Coleccion As Object
Dim disp As Object
Dim hdbc As Long
Dim hstmt As Long
Private Sub conectar_Click()
rc = SQLAllocEnv(henv)
rc = SQLAllocConnect(henv, hdbc)

rc = SQLConnect(hdbc, \"datos remotos\", SQL_NTS, \"\", 0, \"\", 0)
If rc = SQL_ERROR Then
MsgBox (\"No puedo conectar con la fuente\")
rc = SQLFreeConnect(hdbc)
rc = SQLFreeEnv(henv)
Exit Sub
End If
rc = SQLAllocStmt(hdbc, hstmt)
comandoSQL$ = \"UPDATE anag SET aedad=edad+1\"
rc = SQLExecDirect(hstmt, comandoSQL$, SQL_NTS)
rc = SQLFreeStmt(hstmt, SQL_DROP)
rc = SQLDisconnect(hdbc)
rc = SQLFreeConnect(hdbc)
rc = SQLFreeEnv(henv)
End Sub

Nota: las declaraciones de las funciones API las tengo en un modulo aparte a como lo indica el libro,
Hay me disculpan por si los molesto pero se que ustedes son las persona que puedo consultar.
Adios y que tenga un buen dia y Buena suerte.
Atte%

  Respuesta:  Jose Reynaldo Chavarria Quiñonez
Hola German:

Yo tengo varios Años trabajando con SQL Server y la foma mas facil y eficiente de conectarte es usando ADO (Active data Objects)sin embargo esto viene hasta VB6.0 en tu caso con VB5.0 te aconsejo que uses RDO (Remote Data Objects)
para esto necesitas un DSN (Data Source Name) para sql server y que apunte a tu servidor
A continuacion te doy un ejemplo de coneccion usando RDO

'Lo primero es agregar en las referencias del proyecto la referencia para la libreria de "Microsoft Remote Data Object"

'en un modulo si lo queres publico
Public RdoEnv As rdoEnvironment
Public RsSet As rdoResultset
Public RdoCnn As rdoConnection

'En donde quieras hacer conexion
Set RdoEnv = rdoEnvironments(0)
RdoEnv.LoginTimeout = 15 'Tiempo en segundos
strConnect= "DSN=MyDSN;SERVER=MySQLServer;UID=sa;PWD=; APP=MyAplication;WSID=JCHAVARRIA;DATABASE=MyDatabase"
Set RdoCnn = RdoEnv.OpenConnection("MyDSN","", , strConnect)

'con esto yo puedo ejecutar comandos usando Execute
'Ejemplo
Dim strSQL as String

strSQL="Update MyTable SET MyField = 'MyValue'"
RdoCnn.Execute(strSQL)

'TambienPuedo Jalar Informacion haciendo uso del Objeto rdoResultset

strSQL = "SEELECT * FROM MyTable"
Set RsSet = RdoCnn.OpenResultset(StrSQL, rdOpenKeySet, rdConcurLock)

'Posteriormente utiliza el Objeto rsSet