browse ADO
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
Meu teste é assim: funcionou vai pro cliente, não funcionou não vai.
Não tem essa de ficar convertendo uma coisa de cada vez pra algum dia instalar.
Como estou gostando muito do resultado do SQL, e muita coisa é browse....
um browse gráfico seria ideal pra complementar o SQL, e já substituir várias telas.
Por enquanto terminar o serviço, que precisa funcionar, e outro dia vejo GUI novamente.
Não tem essa de ficar convertendo uma coisa de cada vez pra algum dia instalar.
Como estou gostando muito do resultado do SQL, e muita coisa é browse....
um browse gráfico seria ideal pra complementar o SQL, e já substituir várias telas.
Por enquanto terminar o serviço, que precisa funcionar, e outro dia vejo GUI novamente.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Iniciando com hwgui
Ola!
Tem como postar zipado este conteúdo ?
Saudações,
Itamar M. Lins Jr.
Tem como postar zipado este conteúdo ?
Código: Selecionar todos
cnSQLItamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
Pensar em alguma coisa equivalente, que dê pra fazer teste isolado.
Talvez até um array hash.
Talvez até um array hash.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
Deu sinal de vida
Gravei isto, é o que aparece na tela:
O erro até dá pra considerar normal no ADO, porque ADO NÃO deixa acessar quando Eof(), ao contrário do DBF.
Justamente minha classe é pra evitar esse tipo de problema.
Só não sei dizer se deveria acontecer ou não.
Pelo menos mostrou o conteúdo, e deu erro depois.
Código: Selecionar todos
#include "hwgui.ch"
Function Main
Local oMainWindow
INIT WINDOW oMainWindow MAIN TITLE "Example" ;
AT 200,0 SIZE 400,150
MENU OF oMainWindow
MENUITEM "&Exit" ACTION hwg_EndWindow()
MENUITEM "&Dialog" ACTION DlgGet()
ENDMENU
ACTIVATE WINDOW oMainWindow
Return Nil
STATIC FUNCTION DlgGet()
LOCAL oModDlg, oBrw1, cnSQL
cnSQL := win_OleCreateObject( "ADODB.Recordset" )
cnSQL:Open( hb_cwd() + "teste.ado" )
INIT DIALOG oModDlg TITLE "Licenças" AT 0,0 SIZE 1024,768
@ 1,1 BROWSE oBrw1 SIZE 1022,700 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
@ 500,720 OWNERBUTTON ON CLICK {|| hwg_EndDialog()} ;
SIZE 180,36 FLAT ;
TEXT "Close" COLOR hwg_ColorC2N("0000FF")
oBrw1:aarray := cnSQL
oBrw1:AddColumn( HColumn():New( "Codigo", { |v,o| (v), o:aArray:Fields( "CODIGO" ):Value },"C",6,0,.F.,DT_CENTER ) )
oBrw1:AddColumn( HColumn():New( "Nome", { |v,o| (v), o:aArray:Fields( "NOME" ):Value }, "C",30,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrw1:aColumns[2]:lResizable := .F.
oBrw1:bSkip := { |o,nSkip| ADOSkipper( o:aArray, nSkip ) }
oBrw1:bGotop := { |o| o:aArray:MoveFirst() }
oBrw1:bGobot := { |o| o:aArray:MoveLast() }
oBrw1:bEof := { |o| o:aArray:Eof() }
oBrw1:bBof := { |o| o:aArray:Bof() }
oBrw1:bRcou := { |o| o:aArray:RecordCount() }
oBrw1:bRecno := { |o| o:aArray:AbsolutePosition }
oBrw1:bGOTO := { |o,n| (o),o:aArray:Move( n ) }
ACTIVATE DIALOG oModDlg
Inkey(10)
Return Nil
FUNCTION ADOSkipper( cnSQL, nSkip )
LOCAL nRec := cnSQL:AbsolutePosition()
IF ! cnSQL:Eof()
cnSQL:Move( nSkip )
IF cnSQL:Eof()
cnSQL:MoveLast()
ENDIF
IF cnSQL:Bof()
cnSQL:MoveFirst()
ENDIF
ENDIF
RETURN cnSQL:AbsolutePosition() - nRec
Código: Selecionar todos
PROCEDURE PTESRSADO
LOCAL cnSQL := ADOClass():New()
LOCAL cLetra
WITH OBJECT cnSQL
:RsCreate( { ;
{ "CODIGO", "C", 5, 0 } , ;
{ "NOME", "C", 30, 0 } } )
FOR EACH cLetra IN { "A", "B", "C", "D", "E", "F" }
:AddNew()
:Fields( "CODIGO" ):Value := Asc( cLetra )
:Fields( "NOME" ):Value := Replicate( cLetra, 30 )
:Update()
NEXT
cnSQL:Rs:Save( "teste.ado" )
cnSQL:Close()
ENDWITH
Justamente minha classe é pra evitar esse tipo de problema.
Só não sei dizer se deveria acontecer ou não.
Pelo menos mostrou o conteúdo, e deu erro depois.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
As coisas estranhas é precisar de GOTO e RECNO.
Se tentar acessar o que não existe.... daria erro.
Se tentar acessar o que não existe.... daria erro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
bingo.
Ficou doidão, e não deu erro.
o tal GOTO ferra tudo.
Código: Selecionar todos
oBrw1:bGOTO := { | o, n | (o), o:aArray:Move( n ), ;
iif( o:aarray:Bof(), o:aarray:MoveFirst(), nil ), ;
iif( o:aarray:Eof(), o:aarray:MoveLast(), nil ) }
o tal GOTO ferra tudo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
Código: Selecionar todos
oBrw1:bGOTO := { | o, n | (o), o:aArray:Move( n - 1, 1 ) }
Move, se não indicar, é a partir do registro atual.
Foi o mais próximo que deu de funcionar.
PGUP ok até o primeiro
PGDN ok até o último
seta pra cima ok até primeiro
seta pra baixo não para nunca, ou melhor... vai em frente além do limite, até dar aquele mesmo erro de Eof()
Tipo, tem 10 registros, vai até o 20 ou mais antes de dar erro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
pgup
pgdn
seta pra baixo
pgdn
seta pra baixo
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
E antes que comentem....
Se eu alterar pra Move( n, 1 ).... aí não mostra o primeiro.
Como o 1 indica a partir do primeiro, provavelmente move (1, 1, ) indica mover pro segundo, por isso usei o n-1
Mas mesmo que eu altere, o final não chega nunca.
Se eu usar minha classe, provavelmente o resultado vai ser o mesmo, porque ela é apenas intermediária.
Apelei agora, tentei browse array e browse database com ADO.
Também alterei estes dois igual array
Tanto faz ARRAY, DATABASE ou nenhum, coloque o que colocar, o resultado é sempre o mesmo, problema em seta pra baixo.
Código: Selecionar todos
oBrw1:bGOTO := { | o, n | (o), o:aArray:Move( n - 1, 1 ) }
Como o 1 indica a partir do primeiro, provavelmente move (1, 1, ) indica mover pro segundo, por isso usei o n-1
Mas mesmo que eu altere, o final não chega nunca.
Se eu usar minha classe, provavelmente o resultado vai ser o mesmo, porque ela é apenas intermediária.
Apelei agora, tentei browse array e browse database com ADO.
Também alterei estes dois igual array
Código: Selecionar todos
oBrw1:bEof := { | o | o:nCurrent > o:aArray:RecordCount() }
oBrw1:bBof := { | o | o:nCurrent < 1 }
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Iniciando com hwgui
NÃO tem a ver com esse problema.
Acrescentei pra fechar o recordset.
e retirei o inkey(10) que não sei porque estava lá no fonte.
Pensei até que estava travando no final, mas era o inkey(10).
Acrescentei pra fechar o recordset.
Código: Selecionar todos
@ 500,720 OWNERBUTTON ON CLICK {|| cnSQL:Close(), hwg_EndDialog()} ;
Pensei até que estava travando no final, mas era o inkey(10).
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Iniciando com hwgui
Ola!
Tem uma classe ADO que o pessoal da OOH usa. Pode ser aproveitado na Hwgui. Quando sobrar tempo vou olhar...
Agora vou ter que ir na cidade comprar tinta, para pintar um quarto... Mas vc já viu que na Hwgui podemos mexer em tudo é tudo classe.
Quando tiver pronto um exemplo com ADO vou mandar para commit no SVN, tomara que aceitem. Tem outros exemplos com browse etc.. que foram perdidos na sobreposição da versão 2.16 em cima da 2.17. Vou avisar para o Wilfried...
Saudações,
Itamar M. Lins Jr.
Tem uma classe ADO que o pessoal da OOH usa. Pode ser aproveitado na Hwgui. Quando sobrar tempo vou olhar...
Agora vou ter que ir na cidade comprar tinta, para pintar um quarto... Mas vc já viu que na Hwgui podemos mexer em tudo é tudo classe.
Quando tiver pronto um exemplo com ADO vou mandar para commit no SVN, tomara que aceitem. Tem outros exemplos com browse etc.. que foram perdidos na sobreposição da versão 2.16 em cima da 2.17. Vou avisar para o Wilfried...
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
browse ADO
O teste, incluindo um arquivo que é o recordset ADO.
É justamente essa parte que as LIBs esquecem: o recordset ADO é independente, não importa conexão, se MySQL, PostgreSQL, etc. O recordset é sempre um recordset. Ficar querendo vincular isso junto com a origem, é onde estraga tudo.
Mesmo que o ADO tenha muito mais recursos, o básico e importante é esse.
É justamente essa parte que as LIBs esquecem: o recordset ADO é independente, não importa conexão, se MySQL, PostgreSQL, etc. O recordset é sempre um recordset. Ficar querendo vincular isso junto com a origem, é onde estraga tudo.
Mesmo que o ADO tenha muito mais recursos, o básico e importante é esse.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
browse ADO
Ola!
Acredito que é um BUG do hBrowse.prg (fonte da Hwgui).
Quando chega no final volta para o primeiro.
Tô vendo aqui...tá correto isso ? Chegando no fim vai para o primeiro ?
Saudações,
Itamar M. Lins Jr.
Acredito que é um BUG do hBrowse.prg (fonte da Hwgui).
Quando chega no final volta para o primeiro.
Tô vendo aqui...tá correto isso ? Chegando no fim vai para o primeiro ?
Código: Selecionar todos
// Modified by Luiz Henrique dos Santos (luizhsantos@gmail.com)
IF Eval( ::bEof, Self ) .OR. Eval( ::bBof, Self )
Eval( ::bGoTop, Self )
::rowPos := 1
ENDIF
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
browse ADO
Depende aonde tem isso.
Se for na navegação tá errado, causaria o problema que mostrei.
Mas aconteceria com qualquer coisa: DBF, array, etc.
Se for na navegação tá errado, causaria o problema que mostrei.
Mas aconteceria com qualquer coisa: DBF, array, etc.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
browse ADO
LineDown()
LineUp
Reparou algo diferente?
Código: Selecionar todos
METHOD LINEDOWN( lMouse ) CLASS HBrowse
LOCAL minPos, maxPos, nPos, colpos
Eval( ::bSkip, Self, 1 )
IF Eval( ::bEof, Self )
Eval( ::bSkip, Self, - 1 )
Código: Selecionar todos
METHOD LINEUP() CLASS HBrowse
LOCAL minPos, maxPos, nPos
Eval( ::bSkip, Self, - 1 )
IF Eval( ::bBof, Self )
Eval( ::bGoTop, Self )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/