Querys em DBF

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

Moderador: Moderadores

Luiz
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 05 Set 2006 07:30
Localização: Vila Velha - ES

Querys em DBF

Mensagem por Luiz »

Ola, alguem conhece alguma forma de fazer querys num DBF? (utilizando comandos SQL)

É que eu lembrei que no Delphi existe esse recurso. Claro que não deve haver nenhum ganho significativo de performace (talvez nenhum), porem a facilidade de usar uma query as vezes é uma mão na roda.

Se não existir eu tava pensando em fazer um tradutor de querys pra DBF.

Valeu.
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
Romeuk
Usuário Nível 1
Usuário Nível 1
Mensagens: 15
Registrado em: 23 Mar 2008 14:11
Localização: Porto Alegre-RS

Re: Querys em DBF

Mensagem por Romeuk »

Olá
Também me interesso pelo assunto. Cheguei a começar um projeto de Query que ficou parado. O [Alexandre Kresin][/http://kresin.belgorod.su/clipper.html] tem um programa de dbf com query, mas não vi os fontes. Dê uma olhada mais a fundo e talvez eles estejam lá. Neste link tem também um artigo sobre otimização de queries.
edmarfrazao
Usuário Nível 3
Usuário Nível 3
Mensagens: 185
Registrado em: 06 Dez 2005 11:16

Re: Querys em DBF

Mensagem por edmarfrazao »

Tem que usar xharbour com ads.

Código: Selecionar todos


  #include "ADS.CH"
  rddRegister( "ADS", 1 )
  SET SERVER LOCAL
  vSql:=[Select * from clientes]
  vArqLan := EXECUTA_SQL(vSql,[CTLANCAM])

FUNCTION EXECUTA_SQL(vSql,vAlias,vINd1)
//   Local vArea    := Alias()
   Local xNomeArq :=Cria_Nometmp()
   Local xErro    := 0
//   Local nArea :=Select()
   local nErr, nPos
*   if vArea#''
*     close &vArea
*   endif

   if mDriver=[SQLRDD]
      oSql   := SR_GetConnection()
      select 0   // for‡a selecionar uma nova area
      apCode := SR_SQLParse( vSql, @nErr, @nPos )
      cComm  := SR_SQLCodeGen( apCode, , oSql:nSystemID )
      xErro := oSql:exec( cComm,,.t.,[teste], M_DIRTMP+[\]+xNomeArq,vAlias )
//      xErro := oSql:exec( cComm,,.t.,[teste], M_PTDIRET3+[\]+xNomeArq,vAlias )

//      use &cComm alias &vAlias via mDriver new

      if xErro#0
         M_Aviso([Erro na execu‡Æo do sql ]+Str(xErro))
      endif
      if vInd1#nil
        CriaIndice(xNomeArq,vINd1)
      endif
      return Alias()

   else
   //   IF adsGetConnectionHandle() == 0
         adsConnect( "c:\SIS\FIRMA1") // this is the path to your .dbf/.cdx files
   //   ENDIF
      IF !adsCreateSqlStatement ("alias_sql", 2) // alias_sql is a alias to be used in the browse bellow
         alert( "Cannot create SQL statement" )
      ELSE
         IF !adsExecuteSqlDirect ( vSql )
            M_Aviso([Erro na execu‡Æo do sql ]+Str(xErro))
         ENDIF
      ENDIF
   RETURN



   endif

return .t.

FUNCTION INV_DT_SQL(vData)
   Local vSql:=[]
   IF  MDSN=[MSSQL]
       vSql:=vData
   ELSE
       vSql:=Subst(vData,4,2)+[/]+Left(vData,2)+Right(vData,5)
   ENDIF
return vSql

Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Querys em DBF

Mensagem por Hasse »

Boa tarde Edmar.

Muito interessante esta opção.

Ficam entretanto, dúvidas....

Há documentação de uso ? Muito Possivelmente não há esta documentação... Infelizmente.

Se não há documentação, onde há exemplos que expliquem os seu uso, e ajudem a superar o caminho das pedras.

No xHarbour 1.1.0 baixado via CVS há na pasta \Contrib\rdd_ads um exemplo testmg.prg, que ainda não testei, mas pelo que entendi, há necessidade de se compilar ou providenciar, antes de mais nada, os arquivos ace32.dll ( Advantage Client Engine ), AXCWS32.DLL ( communication layer for remote server ) or ADSLOC32.DLL ( local server )

Ai ainda ficam as grandes interrogações que são os comando e funções disponíveis para o uso dos recursos disponíveis que, segundo deu para entender são MUITOS !!!.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Querys em DBF

Mensagem por rochinha »

OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder