Página 1 de 3
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 11:06
por Itamar M. Lins Jr.
Olá!
Fragmento da conversa.
Planejo fazer algum trabalho este ano para dar suporte a consultas SQL em cima de
RDD (qualquer área de trabalho aberta - não apenas na memória). Mas primeiro algo mais
tem prioridade!
Quem trabalharia em ideias como essas? Porque temos muito mais ideias,
que não são apoiadas por mão de obra.
Você pode fazer um tipo Unique( <aArray>/<hHash> ) que retornará um
array que tem apenas elementos/chaves exclusivos, se a fonte for hash use
HB_HKeys(). O JavaScipt parece ter uma especificação muito longa para uma
funcionalidade tão simples, realmente não parece necessário fazer um novo
ValType() a partir dele. Além disso, o nome Set() colide com DBASE/Clipper SET's
Atenciosamente, Aleksander
Olá Aleksander,
Seria incrível ter suporte SQL nativo no Harbour!
O VFP tem, mas é uma linguagem morta. Foi incrível poder executar vários SQL remotos de qualquer backend como o PostgreSQL, por exemplo, e então executar mais SQL local nesses resultados.
Talvez isso também ajude os desenvolvedores do xBase++ a migrarem para o Harbour, já que ele também tem algum suporte SQL local.
Poder executar milhares de consultas SQL localmente torna tudo muito mais fácil, especialmente para trabalhos ETL.
O SQL local também pode acessar variáveis locais e até mesmo chamar funções ou métodos locais de objetos no escopo.
Terei prazer em escrever alguma documentação para ele, artigo em harbor.wiki e, claro, ajudar você a testá-lo.
Atenciosamente, Eric
Resposta do Aleksander Czajczynski
Muito obrigado por isso, entrarei em contato com você assim que tiver algo
utilizável e que valha seu tempo.
Já tem o LetoDbf, agora com SQL, vai ser show de bola.
Lembrando que as ultimas atualizações do LetoDbf(ELch) pegou do fork dele.
Vida longa e próspera ao DBF!
Saudações,
Itamar M. Lins Jr.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 12:02
por Ana Mitoooo
Já tem isso pronto na QTContribs
https://sourceforge.net/p/qtcontribs/co ... ree/trunk/
https://sourceforge.net/p/qtcontribs/co ... cripts.prg
Pritpal Bedi
Dec 12, 2016, 11:14:14 PM
to QtContribs
2016-12-12 16:43 UTC-0800 Pritpal Bedi (bedipritpal at hotmail.com)(r443)
* hbqtwidgets/scripts.prg
% Changed : SQL parser from procedural to class code.
+ Array browser window adjusts to number of columns in the record upto
maximum columns which can be accomodated on the screen.
+ Implemented: SQL aggregate functions:
a) Count( * )
b) Min( cNumFieldName *|+|-|/ cSecondNumField *|+|-|/ cThirdNumField )
c) Max( cNumFieldName *|+|-|/ cSecondNumField *|+|-|/ cThirdNumField )
d) Avg( cNumFieldName *|+|-|/ cSecondNumField *|+|-|/ cThirdNumField )
e) Sum( cNumFieldName *|+|-|/ cSecondNumField *|+|-|/ cThirdNumField )
+ Implemented: SQL string functions:
a) SubStr( cCharFieldName, nFrom [, nCount ] )
b) Left( cCharFieldName, nCount )
c) Right( cCharFieldName, nCount )
d) Upper( cCharFieldName )
e) Lower( cCharFieldName )
+ Implemented: A general purpose field to club multiple numeric columns.
It is like SUM() function but is not an aggregate function. Syntax is:
a) Func( salary * age )
; WARNING: no parenthesis inside the function body.
; Title of the column representing above functions is constructed
automatically. Still, I am at a loss how to implement AS clause.
[ Preprocessor Limitation ].
; Example calls:
SELECT * FROM c:\harbour\tests\test.dbf ORDER BY age WHERE age>=90
SELECT first,last,age,state,zip,sum(age * age),count(*) ;
FROM c:\harbour\tests\test.dbf ORDER BY age-desc,state WHERE age>66
SELECT age,state,Func(age*salary),Right(state,1),Sum(salary),Min(salary),Max(salary),Avg(salary),Count(*) ;
FROM c:\harbour\tests\test.dbf GROUP BY age,state ORDER BY age-desc,state WHERE age > 66
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 13:53
por Ana Mitoooo
Quiser repassar na conversa do A.K., segue a classe desmembrada da qtContribs
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 14:18
por Itamar M. Lins Jr.
Olá!
Já conhecia essa implementação do Pritpal Bedi. Eu uso a HBIDE dele.
Mas, essa que o Czajczynski( Prefiro pensar como KASINSK ) tipo os pinguins de Madagascar, Kowalski. rsrsrs.
Ele tem conhecimento para mexer internamente nos RDD do Harbour e do LetoDBf.
Vamos aguardar o desenrolar.
Saudações,
Itamar M. Lins Jr.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 16:25
por sygecom
Não faz muito sentido, mas a notícia é boa.
Se é para usar é melhor partir logo para um MYSQL,MARIADB, POSTGRESQL e etc...
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 16:53
por alxsts
Olá!
E pensar que em 1991 o FoxPro 2.0 já suportava sintaxe SQL..
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 17:57
por JoséQuintas
Sei lá...
Isso está disponível no ADS Local há mais de 30 anos, e via outros ODBC também, até da própria Microsoft.
Parece andar pra trás, perder tempo com o que não interessa.
Além disso, acesso SQL no harbour não vai ser o mesmo do que um acesso via server.
Sei lá o que passa na cabeça desse povo que insiste em DBF.
Todo mundo usando base de dados SQL, e esse povo insistindo em DBF.
Parece que esse povo não cansa de ficar isolado do mundo.
Vai ser por isso o mundo harbour se divide tanto... todo mundo quer ficar isolado kkkkk
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:04
por JoséQuintas
Código: Selecionar todos
cmdConfirma.Enabled = False
Dim Rs As ADODB.Recordset
Dim cSQL As String
Dim nCont As Long
If Dir("lixo.dbf") <> "" Then SqlExecute "drop table lixo"
cSQL = "select " & _
"cnDatEmi DtEmissao, " & _
"count(*) CtrcQtd, " & _
"Sum(cnPeso) CtrcPeso, " & vbCrLf & _
"Sum(cnValor) CtrcValor, " & _
"Sum(cnVlMerc) ValorMerc, " & _
"0 CFQtd, " & vbCrLf & _
"0 CFValor, " & _
"0 ColetaQtd, " & _
"0 ColetaVlr, " & vbCrLf & _
"0 ColVlMerc " & vbCrLf & _
"into lixo " & _
"From gtconhe group by DtEmissao "
cSQL = cSQL & _
"union all " & vbCrLf & _
"select cfDatEmi DtEmissao, " & _
"0 CtrcQtd, " & _
"0 CtrcPeso, " & vbCrLf & _
"0 CtrcValor, " & _
"0 ValorMerc, " & _
"count(*) CFQtd, " & vbCrLf & _
"Sum(CFValor) CfValor, " & _
"0 ColetaQtd, " & _
"0 ColetaVlr, " & vbCrLf & _
"0 ColVlMerc " & vbCrLf & _
"From gtcontr group by DtEmissao "
cSQL = cSQL & vbCrLf & _
"union all " & _
"Select " & _
"ceDatEmi DtEmissao, " & _
"0 CtrcQtd, " & vbCrLf & _
"0 CtrcPeso, " & _
"0 CtrcValor, " & _
"0 ValorMerc, " & vbCrLf & _
"0 CFQtd, " & _
"0 CFValor, " & _
"Count(*) ColetaQtd, " & vbCrLf & _
"Sum(ceValFat) ColetaVlr, " & _
"Sum(jpnftr1.ntValor) ColVlMerc " & vbCrLf & _
"from jpordem " & _
"left join jpnftr1 on jpordem.ceNumLan = jpnftr1.ntColeta " & _
"group by DtEmissao " & vbCrLf
Set Rs = RsFromConexao(cSQL)
Rs.Close
cSQL = "select DtEmissao, Sum(CtrcQtd) CtrcQtd, Sum(CtrcPeso) CtrcPeso, " & _
"Sum(CtrcValor) CtrcValor, Sum(ValorMerc) ValorMerc, " & vbCrLf & _
"Sum(CFQtd) CFQtd, Sum(CFValor) CFValor, " & _
"Sum(ColetaQtd) ColetaQtd, Sum(ColetaVlr) ColetaVlr, Sum(ColVlMerc) ColVlMerc " & _
"from lixo group by DtEmissao order by DtEmissao Desc "
Set Rs = RsFromConexao(cSQL)
Set MSHFlexGrid2.DataSource = Rs
Rs.Close
cSQL = "select Year(DtEmissao)*100+Month(DtEmissao) Mes, " & _
"Sum(CtrcQtd) CtrcQtd, Sum(CtrcPeso) CtrcPeso, Sum(CtrcValor) CtrcValor, Sum(ValorMerc) ValorMerc, " & vbCrLf & _
"Sum(CFQtd) CFQtd, Sum(CFValor) CFValor, " & vbCrLf & _
"Sum(ColetaQtd) ColetaQtd, Sum(ColetaVlr) ColetaVlr, Sum(ColVlMerc)ColVlMerc " & _
"from lixo group by Mes order by Mes Desc "
Set Rs = RsFromConexao(cSQL)
Set MSHFlexGrid1.DataSource = Rs
É meu fonte Visual Basic, dos tempos do Windows 98, usando DBF e ADS Local.
Isso SEMPRE FOI GRÁTIS, e pode ser usado DIRETAMENTE NO HARBOUR SEM ODBC E EM WINDOWS OU LINUX, só usar RDDADS.
Faz parte do harbour.
30 anos funcionando.
Vão começar a criar algo parecido.... pra que ?
Pra ter bugs e ser jogado fora ?
Querem usar SQL encima de DBF ?
Usem já, pra que esperar.
Tanto faz se por RDDADS, ou por ADO, tanto faz, tem as duas opções, ou até mais.
Só perguntar no fórum harbour-users que vai aparecer muita gente usando.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:06
por alxsts
Olá!
Talvez fosse melhor investir este tempo para criar algum mecanismo para acessar bases de dados NoSQL. Creio que nada existe para esta finalidade. Nem sei se haveria alguém interessado em usar...
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:11
por JoséQuintas
Tá aqui ó:
https://github.com/harbour/core/tree/ma ... rib/rddads
Alguém se interessou ?
Qual a diferença ?
Como diz o Itamar.... SQL NATIVO NO HARBOUR
EXISTE DESDE ANTES DO RDD DBFCDX SER ESTÁVEL.
Pra quem não lembra, na versão 0.99 do harbour ou antes, era recomendado usar esse.
Depois começou a ficar estável, e passou a ser usado o do harbour.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:21
por JoséQuintas
Fonte criado pelo Alexander S. Kresin, da HWGUI em 2000
Mudou de pasta em 2013, pelo Viktor.
Disponível pra Windows e Linux, como dá pra perceber à direita.
SQL em DBF fez sucesso ? dezenas de anos disponível ?
Não.
Porque agora seria diferente ?
O Pritpal Bedi já fez um trabalho desse também.
Na minigui encontramos EasySQL, sei lá se é pra isso, nem perdi tempo olhando.
Também tem uma classe no fivewin pra usar com DBFs... também não perdi tempo olhando.
E por aí vai.
Quem quiser... tudo bem... nada contra quem quiser usar e quiser ficar isolado do mundo.
Talvez possa pedir suporte para o além, ou talvez pra IA.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:51
por Itamar M. Lins Jr.
Olá!
Pra mim será ÓTIMO!
Pq, vou usar a SINTAXE. O MOTOR tanto faz, já uso LetoDbf, excelente, SUPER VELOZ, quem usa sabe.
Imagine o seguinte, tem o SQLRDD do xHarbour, será praticamente a mesma coisa.
Depois de tudo em SQL, posso continuar ou não com DBF. Posso ESCOLHER pq passei a usa a SINTAXE SQL. Não tem DBF compartilhado.
O do ADS existe até hoje é BEM CARO! O DBF é um banco de dados como qualquer outro, SGBD, depois que criaram o LetoDbf, com as limitações dos comandos em DBF.
Se puder usar ele com SQL + arquivos na memória, como ele diz, será melhor ainda.
Não se compara com MariaDb, Postgress... mas depois de ter mudado tudo para SQL. A escolha será mais simples quando decidirmos mudar de DBF para Postgress por exemplo sem precisar reescrever tudo.
Nós usuário de DBF ficaremos muito satisfeitos se um dia poder usar SQL no Harbour, sem precisar de recorrer ao ADS.
Confio na visão deles. E até entender o que eles querem.
Imaginem não precisar usar mais SET FILTER e passar a usar INNER JOIN.
Saudações,
Itamar M. Lins Jr.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:51
por Itamar M. Lins Jr.
.
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 18:53
por sygecom
JoséQuintas escreveu:Sei lá...
Isso está disponível no ADS Local há mais de 30 anos, e via outros ODBC também, até da própria Microsoft.
Parece andar pra trás, perder tempo com o que não interessa.
Além disso, acesso SQL no harbour não vai ser o mesmo do que um acesso via server.
Sei lá o que passa na cabeça desse povo que insiste em DBF.
Todo mundo usando base de dados SQL, e esse povo insistindo em DBF.
Parece que esse povo não cansa de ficar isolado do mundo.
Vai ser por isso o mundo harbour se divide tanto... todo mundo quer ficar isolado kkkkk
As vezes o cara só está entediado e com tempo, vai arrumar umas sarnas para se coçar kkkkkkk
SQL no DBF em breve (promessa) Aleksander Czajczynski
Enviado: 13 Fev 2025 19:02
por JoséQuintas
Itamar M. Lins Jr. escreveu:Depois de tudo em SQL, posso continuar ou não com DBF. Posso ESCOLHER pq passei a usa a SINTAXE SQL. Não tem DBF compartilhado.
O do ADS existe até hoje é BEM CARO!
Então....
http://pctoledo.com.br/forum/viewtopic. ... &hilit=ads
Em 2020 o A Simões fez isso, usou o ADS como ponte pra migrar pra MariaDB.
ADS SEM SERVIDOR SEMPRE FOI GRÁTIS.
Não é tão rápido quanto com servidor, mas é muuuuito mais rápido que dbf tradicional.