FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Conectar a SQL Server
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Conectar a SQL Server
Posted: Thu Aug 14, 2014 07:53 PM
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 (fw): Select all Collapse
#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.
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Conectar a SQL Server
Posted: Thu Aug 14, 2014 10:22 PM
______________________________________________________________________________

Sevilla - Andaluc铆a
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Conectar a SQL Server
Posted: Fri Aug 15, 2014 04:26 PM
Muchas gracias xmanuel

Hice varios cambios y nada
Aqu铆 im谩genes del servidor
Server:

Tablas:


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

Gracias por la ayuda

Saludos,

Adhemar
Saludos,



Adhemar C.
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Sat Aug 16, 2014 03:01 PM

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)
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Conectar a SQL Server
Posted: Sat Aug 16, 2014 05:04 PM

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.
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Sat Aug 16, 2014 07:28 PM
http://www.blogdemegastar.com/2010/09/pasos-para-configurar-sql-server-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?name=News&file=article&sid=475
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Sat Aug 16, 2014 07:43 PM

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)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Sun Aug 17, 2014 05:22 AM

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.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Sun Aug 17, 2014 05:25 AM
estos ser谩n los programas de prueba.

programa de prueba con linux y mysql 5.5
========================================
Code (fw): Select all Collapse
#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 (fw): Select all Collapse
#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)
Posts: 581
Joined: Tue Oct 11, 2005 11:28 AM
Re: Conectar a SQL Server
Posted: Sun Aug 17, 2014 01:48 PM

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
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Sun Aug 17, 2014 03:42 PM

Saludos Kleyber.

:-)

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 62
Joined: Tue Jul 08, 2008 04:27 PM
Re: Conectar a SQL Server
Posted: Mon Aug 18, 2014 06:11 PM
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 (fw): Select all Collapse
#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.
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Mon Aug 18, 2014 06:43 PM
Code (fw): Select all Collapse
#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)
Posts: 62
Joined: Tue Jul 08, 2008 04:27 PM
Re: Conectar a SQL Server
Posted: Mon Aug 18, 2014 07:11 PM

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.
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Conectar a SQL Server
Posted: Mon Aug 18, 2014 07:20 PM

lo podemos ver por teamviewer?

salu2
carlos vargas

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)