Página 1 de 1
Querys em DBF
Enviado: 17 Jun 2008 17:20
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.
Re: Querys em DBF
Enviado: 17 Jun 2008 17:49
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.
Re: Querys em DBF
Enviado: 18 Jun 2008 09:22
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
Re: Querys em DBF
Enviado: 18 Jun 2008 13:16
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 !!!.
Re: Querys em DBF
Enviado: 19 Jun 2008 21:26
por rochinha