Conectar a SQL Server

User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Conectar a SQL Server

Post by acuellar »

Hola amigos
Estoy tratando de conectar a un motor de SQL y no logro hacerlo.

El server es: APLICA
El motor: SQLEXPRESS
La base: dbPersonalTajibos
User y Pass: personal

Aquí lo que estoy haciendo con un ejemplo de Carlos Vargas

Code: Select all

#include "fivewin.ch"
#Include "Ado.Ch"
*
function Main()
          Local cConn, oConn, oRx, FALSE := .F., cConnection
          
         cConn := "Server=APLICA\SQLEXPRESS;Database=dbPersonalTajibos;Uid=personal;Pwd=personal;"//;network=dbmssocn
         oConn := FW_OpenAdoConnection( cConn, FALSE )

         IF HB_IsNil( oConn )
            MsgStop( "Acceso al servidor de datos no fue posible." )
         ENDIF

         oRS := KRecordSet( oConn, "SELECT * FROM TABLA")
         IF oRS <> NIL
              xbrowse( oRS )
         ENDIF

         *oRS:Close()
        * oConn:Close()
         
 
return nil
*
FUNCTION KRecordSet( oConn, cSQL, nCursorLocation, nCursorType, nLockType )
   LOCAL oRS, oRST

   DEFAULT nCursorLocation := adUseClient, ;
           nCursorType     := adOpenStatic, ;
           nLockType       := adLockOptimistic

   IF HB_IsObject( oConn )
      IF oConn:State == adStateOpen
         oRST := TOleAuto():New( "ADODB.RecordSet" )
         WITH OBJECT oRST
            :ActiveConnection := oConn
            :Source           := cSQL
            :CursorLocation   := nCursorLocation
            :CursorType       := nCursorType
            :LockType         := nLockType
         END
         TRY
            CursorWait()
            oRST:Open()
            CursorArrow()
         CATCH
            CursorArrow()
            *FW_ShowAdoError( oConn )
            oRST := NIL
         END
      ENDIF
   ENDIF

RETURN oRS
 
 
Gracias por la ayuda

Saludos,

Adhemar
Saludos,

Adhemar C.
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

Re: Conectar a SQL Server

Post by xmanuel »

______________________________________________________________________________
Sevilla - Andalucía
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Conectar a SQL Server

Post by acuellar »

Muchas gracias xmanuel

Hice _ y nada
Aquí imágenes del servidor
Server:
Image
Tablas:
Image

Como se hace para mostrar el contenido de la tabla dbo.empleado?

Gracias por la ayuda

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

Hola, lo estas haciendo local o en una red?
si es en una red, deber habilitar la conexion remota en la pc que actua de servidor, ademas de permitir e el firewall de windows la conexion al servidor ms msql, en la web hay ejemplos de como hacerlo.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Conectar a SQL Server

Post by acuellar »

Gracias Carlos

Es en Red, como decis me parece que es porque no tiene permitido el acceso remoto.
Buscaré como hacerlo

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

http://www.blogdemegastar.com/2010/09/p ... -2008.html

Usualmente yo lo que hago primero es realizar una conexión odbc desde el panel de control, esto desde la maquina servidor, esta prueba debe funcionar si o si con los datos de usuario y clave correctos.
esto por que acá no hay nada que bloquee la conexión.

Luego ya en la red local, en una pc conectada al mismo segmento de red (en una red simple siempre lo es), hago un ping entre las pc involucradas, esto es para ver si hay conexión entre ellas (ahora en windows hay que habilitar en el firewall el permitir el ping, pueden buscar en google como hacerlo con el windows que usan), luego que he probado que hay conexión, paso a crear en esta pc remota una conexión odbc apuntando al servidor (siempre desde el panel de control), acá no va a funcionar a la primera, dará fallo de conexión, por lo que resta hacer lo siguiente:

1.-habilitar la conexiona remota al servidor ms sql.
2-permitir que el firewall de la pc que actua como servidor permita la conexión.

estos dos pasos lo puedes hacer con la guia del link que he puesto.

una vez que la conexión odbc funcione, ya puedes pasar a programar tu prueba de conexión con ado.

Recomenación: todos los windows, viene de serie con un cliente odbc para conectarse a un servidor ms sql.
pero es mejor usar los clientes actualizados, por ejemplo para el servidor 2008/R2 se usa el cliente 10 de ms sql. esto para evitar problemas con tipos de datos tipo fecha.
o cosas asi. para el server 2012 es la version 11 del cliente.

--------------------------------
otra muy buena guia
http://www.ajpdsoft.com/modules.php?nam ... le&sid=475
Last edited by carlos vargas on Sat Aug 16, 2014 7:47 pm, edited 1 time in total.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

Para habilitar PING en una pc windows 7/8

Para habilitarlo sigue estos pasos:
1- Ir a Inicio, Panel de control, asegúrate que del lado superior derecho este seleccionado ver por iconos grandes o icono pequeños, luego busca y abre el icono Firewall de Windows.
2- Del lado izquierdo elige la opción configuración avanzada, aguarda a que se abra la ventana de Configuración avanzada y selecciona Reglas de entrada, haz clic con el botón derecho sobre Reglas de entrada y selecciona la opción Nueva Regla.
3-Selecciona regla personalizada y presiona siguiente. Selecciona todos los programas y luego presiona siguiente.
4-En tipo de protocolo debes seleccionar ICMPv4, presiona siguiente.
5-Deja las dos configuraciones en Cualquier dirección IP y presiona siguiente.
6-Selecciona permitir la conexión y presiona siguiente.
7-Deja las tres opciones marcadas y presiona siguiente.
8-Elige un nombre a la nueva regla por ejemplo PING y presiona finalizar.

listo, prueba a hacer ping a la ip del equipo.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

para aquellos que inician en sql, he realizado dos vídeo de como implementar un servidor mysql con ubuntu, y otro con ms sql 2008 r2 express.

SERVIDOR LINUX CON MYSQL
====================================
1.-Creación de maquina virtual, instalación de ubuntu 14.04 server 32 bits,
instalación de LAMP (servidor web apache, mysql 5.5 y php)
2.-Configuración de entorno de red local.
2.-instalación de phpmyadmin en el servidor linux.
3.-creacion de base de datos y una tabla-
4.-configuración de mysql para permitir conexiones remotas.
5.-creación de conexión odbc en un equipo windows para realizar prueba de conexión con el servidor linux.
6.-creación de programa con fwh para realizar una conexión al servidor usando ado.

WINDOWS 7 CON MSSQL 2008 R2 EXPRESS
====================================
1.-Creación de la maquina virtual con windows 7.
2.-Instalación de mssql 2008 r2 express.
3.-Instalación de la consola de administración de mssql.
4.-creacion de base de datos y una tabla.
5.-configuración de entorno de red.
6.-permitir ping en windows 7 para realizar prueba de conexión entre los equipos.
7.-configuración en mssql para permitir las conexiones remotas.
8.-apertura del firewall a los servicios de mssql para permitir conexiones remotas.
9.-creación de conexión odbc en el equipo windows que actúa como servidor para verificar correcto funcionamiento del servidos mssql.
10.-creación de conexión odbc en el equipo cliente windows para verificar conexión remota con el servidor mssql.
11.-creación de programa con fwh para realizar una conexión al servidor usando ado.

Estos vídeos no tendrán audio lamentablemente, pero todas las operaciones son atendibles ( creo yo :-) ).
todas las configuraciones muestra los errores que normalmente cometemos, así como busco las soluciones en google y las implemento.

como son muy grandes los dejare subiendo el día lunes en la noche en el trabajo ya que ahí tengo una mejor velocidad de subida que acá en la casa.

espero que el día martes ya estén disponibles.

al ser mis primeros vídeos, no esperen gran calidad, como les comente, no tienen audio, pero espero que les sea de utilidad.

ya la otra semana espero que con la misma maquina virtual linux la cual tiene apache, implementar un fiveweb, permitir usar cgi y poder usar tdolphin también.

así que los que se animen a hacer sus maquinas virtuales guárdenlas.
Last edited by carlos vargas on Sun Aug 17, 2014 5:29 am, edited 1 time in total.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

estos serán los programas de prueba.

programa de prueba con linux y mysql 5.5
========================================

Code: Select all

#include "fivewin.ch"
#Include "ado.Ch"

#define FALSE .f.
#define TRUE  .t.

function Main()
   LOCAL cConn, oConn, oRS, cConnection
   
   /*en linux hay que tener cuidado con los nombre de base de datos y tablas, ya que linux distinge entre mayusculas y minusculas en windows no hay problema*/
   cConn := "Driver={MySQL ODBC 5.2 ANSI Driver};Server=192.168.1.100;Port=3306;Database=dbmytest;User=carlos;Password=123456;Option=2048;"
       
   oConn  := FW_OpenAdoConnection( cConn, FALSE )

   IF HB_IsNil( oConn )
      MsgStop( "Acceso al servidor de datos no fue posible." )
      RETURN
   ELSE
      MsgInfo( "Conectado!" )
   ENDIF

   oRS := KRecordSet( oConn, "SELECT * FROM mytabla") 
   IF oRS <> NIL
      XBrowse( oRS )
   ENDIF

   oRS:Close()
   oConn:Close()

return
*
FUNCTION KRecordSet( oConn, cSQL, nCursorLocation, nCursorType, nLockType )
   LOCAL oRS, oRST

   DEFAULT nCursorLocation := adUseClient, ;
           nCursorType     := adOpenStatic, ;
           nLockType       := adLockOptimistic

   IF HB_IsObject( oConn )
      IF oConn:State == adStateOpen
         oRST := TOleAuto():New( "ADODB.RecordSet" )
         WITH OBJECT oRST
            :ActiveConnection := oConn
            :Source           := cSQL
            :CursorLocation   := nCursorLocation
            :CursorType       := nCursorType
            :LockType         := nLockType
         END         
         TRY
            CursorWait()
            oRST:Open()
            CursorArrow()
         CATCH
            CursorArrow()
            FW_ShowAdoError( oConn )
            oRST := NIL
         END
      ENDIF
   ENDIF

RETURN oRST
 
programa de prueba con mssql 2008 r2 express
========================================

Code: Select all

#include "fivewin.ch"
#Include "ado.Ch"

#define FALSE .f.
#define TRUE  .t.

function Main()
   LOCAL cConn, oConn, oRS, cConnection
    
   cConn := "Driver={SQL Server Native Client 10.0};Server=MYSERVER2\SQLEXPRESS;Database=DBPRUEBA;Uid=sa;Pwd=Admin2014;network=dbmssocn;"
    
   oConn  := FW_OpenAdoConnection( cConn, FALSE )

   IF HB_IsNil( oConn )
      MsgStop( "Acceso al servidor de datos no fue posible." )
      RETURN
   ELSE
      MsgInfo( "Conectado!" )
   ENDIF

   oRS := KRecordSet( oConn, "SELECT * FROM TABLA01")
   IF oRS <> NIL
      XBrowse( oRS )
   ENDIF

   oRS:Close()
   oConn:Close()

return
*
FUNCTION KRecordSet( oConn, cSQL, nCursorLocation, nCursorType, nLockType )
   LOCAL oRS, oRST

   DEFAULT nCursorLocation := adUseClient, ;
           nCursorType     := adOpenStatic, ;
           nLockType       := adLockOptimistic

   IF HB_IsObject( oConn )
      IF oConn:State == adStateOpen
         oRST := TOleAuto():New( "ADODB.RecordSet" )
         WITH OBJECT oRST
            :ActiveConnection := oConn
            :Source           := cSQL
            :CursorLocation   := nCursorLocation
            :CursorType       := nCursorType
            :LockType         := nLockType
         END         
         TRY
            CursorWait()
            oRST:Open()
            CursorArrow()
         CATCH
            CursorArrow()
            FW_ShowAdoError( oConn )
            oRST := NIL
         END
      ENDIF
   ENDIF

RETURN oRST
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: Conectar a SQL Server

Post by Kleyber »

Carlos,

Te felicito por tu iniciativa. Esto con certeza ayudara a muchos que viven en el mundo xBase y no tienen la idea correcta que es de trabajar con bases de datos SQL.
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

Saludos Kleyber.

:-)
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Mayor_Valenzuela
Posts: 62
Joined: Tue Jul 08, 2008 4:27 pm
Location: Santiago, Chile

Re: Conectar a SQL Server

Post by Mayor_Valenzuela »

Estimados,

Permiso para meter las narices aqui... he realizado cada uno de los post referentes a MSSQL y no logro realizar el recordset, no soy muy entendido en ADO y por lo mismo levante un post donde Carlos Vargas amablemente me dio unas luces... mi codigo luce asi hoy:

Code: Select all

#include "fivewin.ch"
#include "ado.ch"
#include "xbrowse.ch"

Function Main()
Local oConnect, oCString, oDL, oDbCli, oRs, oBrw

 oConnect:= CreateObject( "ADODB.Connection" )

 oCString := "Provider=SQLOLEDB;server=SIOUX-66C9BEE55\SOSQL2008;database=SIOUX;uid=sa;pwd=Softland914"
*oCString := "Driver={SQL Server Native Client 10.0};Server=SIOUX-66C9BEE55\SOSQL2008;Database=SIOUX;Uid=sa;Pwd=Softland914;network=dbmssocn;"

 oConnect:Open(oCString)

 MsgInfo( HB_IsObject( oConnect ) )  //Compruebo si se creo objeto
 try
   oRs := TOleAuto():New( 'ADODB.RecordSet' )
   WITH OBJECT oRs
      :ActiveConnection := oConnect
      :Source           := 'SELECT * from iw_gsaen'
      :CursorLocation   := 3
      :Open()
   END
 catch oErr
   AdoError(oConnect)
   return .f.
 end try

Return ( Nil )
 
Pero me da un Native Error 208, realizo la coneccion a la base de datos pero a la tabla me es imposible, ¿alguna idea de porque pasa esto?

Agradecido y perdon por invadir el post.

Gracias
Mario Valenzuela M.
Santiago, Chile.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

Code: Select all

#include "fivewin.ch"
#include "ado.ch"
#include "xbrowse.ch"

FUNCTION Main()
  LOCAL oConnect, cCString, oError, oRS, lRS := .f.

  cCString := "Driver={SQL Server Native Client 10.0};"
  cCString += "Server=SIOUX-66C9BEE55\SOSQL2008;"
  cCString += "Database=SIOUX;Uid=sa;Pwd=Softland914;network=dbmssocn;"
  
  TRY
    oConnect := CreateObject( "ADODB.Connection" )
    oConnect:Open( cCString )
  CATCH oError
     MsgStop( oError:Description )
     RETURN
  END

  TRY
    oRs := TOleAuto():New( "ADODB.RecordSet" )
    WITH OBJECT oRs
      :ActiveConnection := oConnect
      :Source                 := "SELECT * from iw_gsaen"
      :CursorLocation     := adUseClient
      :CursorType           := adOpenStatic
      :LockType              := adLockOptimistic
      :Open()
    END
    lRS := .t.
  CATCH oError
    MsgStop( oError:Description )
  END
  
  if lRS
    xbrowse( oRS )
  endif

  oConnect:end()

RETURN NIL
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Mayor_Valenzuela
Posts: 62
Joined: Tue Jul 08, 2008 4:27 pm
Location: Santiago, Chile

Re: Conectar a SQL Server

Post by Mayor_Valenzuela »

Gracias por la pronta respuesta, al compilar y ejecutar me arroja un "DISP_E_UNKNOWNNAME", Error 208: Objeto no válido nombre 'iw_gsaen'.
Mario Valenzuela M.
Santiago, Chile.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Conectar a SQL Server

Post by carlos vargas »

lo podemos ver por teamviewer?

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Post Reply