Acessar SQL Server (Microsoft)

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Acessar SQL Server (Microsoft)

Mensagem por jamazevedo »

Olá Senhores.

- Um cliente adquiriu o Software Misterchef (para restaurantes) e possui uma base de dados "DBF", ele usará o Misterchef somente para emissão de cupons fiscais e precisa converter sua base de dados "DBF" para o banco de dados do Misterchef (SQL Server).
- Procurei aqui no forum e em outros site exemplos de acesso ao SQL Server mas não tive sucesso.
- Alguém tem algum exemplo simples de como conectar ao SQL Server e fazer INSERT e UPDATE ???
- Possuo um amplo conhecimento de acesso ao MySQL e Firebird via Harbour consigo acessar esses bancos nativamente sem problemas mas o SQL Server (Microsoft) estou apanhando feio :%.
- No caso desse cliente não basta converter os dbf's com programas externos o acesso tem que ser nativo ou via drive odbc.
- Minha plataforma de desenvolvimento é Ubuntu 10.04 e Harbour 2.1.0

Desde já agradeço a ajuda.

Atenciosamente,

José Airton.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Acessar SQL Server (Microsoft)

Mensagem por alxsts »

Olá!

O código abaixo acessa um banco Oracle XE via ADO.

Tente trocar a string de conexão por outra para SQL Server e depois teste com alguma tabela que você tenha no teu banco.

Código: Selecionar todos

#include "ado.ch"

PROCEDURE Main()

   LOCAL oCn, oRs, oErr

   AltD()   

   TRY
      oCn := CreateObject( "ADODB.Connection" )

      oCn:ConnectionString := "Provider=OraOLEDB.Oracle;Data Source=XE;User ID=system;Password=abc100;FetchSize=100;CacheType=Memory;"

      oCn:Open()

      oRs := CreateObject("ADODB.RecordSet")

      With Object oRs
         :cursorType := adOpenDynamic 
         :activeConnection( oCn )
         :cursorLocation = adUseServer
         :maxRecords = 100000
         :cacheSize = 100
         :source := "SELECT ROWNUM AS REC, COUNTRY_ID, COUNTRY_NAME  FROM HR.Countries"

         //  ou troque as linhas:
         //    oRs:activeConnection( oCn )
         //    oRs:source := "SELECT ROWNUM AS REC, COUNTRY_ID, COUNTRY_NAME  FROM HR.Countries"
         //  por:
         //    oRs:open( "SELECT ROWNUM AS REC, COUNTRY_ID, COUNTRY_NAME  FROM HR.Countries", oCn ) 

         :open()
 
         :moveFirst()

         CLS

         Do While ! :eof()
           QOut( Transform( :Fields( "rec" ):value, "999" ), "-", ;
                 :Fields( "Country_id" ):Value, "-", ;
                 :Fields( "Country_Name" ):Value ) 
           :MoveNext()
         ENDDO

         :Close()
         oRs := Nil
      End   

      oCn:Close()
      oCn := Nil
   
   CATCH oErr
      Alert( "Error: " + oErr:Operation + " -> " + oErr:Description )
   END

   RETURN   
//--------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Re: Acessar SQL Server (Microsoft)

Mensagem por jamazevedo »

Usando esse método vou precisar da função TOLEAUTO() como sou usuário Linux esta função só funciona no Windows, tenho os fontes dela no Harbour mas não é possível gerar a lib.
:^|
Na pasta contrib tem umas sub-pastas hbmysql e hbfbird (que permitem o total controle sobre os referido bancos), pesquisando na net localizei uns prg's "tmsql.prg" (muito antigo) talvez fosse essa a solução mas já procurei nas versões antigas do (x)harbour e não os encontrei.
Se alguém tivê-los por ai, talvez seja a solução.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Acessar SQL Server (Microsoft)

Mensagem por alxsts »

Olá!

Este exemplo que postei funciona perfeitamente em Linux, compilado com xHarbour.
[]´s
Alexandre Santos (AlxSts)
Responder