Browse com ADO
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
não uso isso, vai precisar dar uma olhada nas variáveis do tbrowse, em algum help do Clipper.
Ou... no fonte do browse do Harbour, ou em algum fonte de tbrowse do fórum.
Ou... no fonte do browse do Harbour, ou em algum fonte de tbrowse do fórum.
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 com ADO
Faltou colocar: com WITH OBJECT simplifica um pouco digitar também:
Usando WITH OBJECT não precisa colocar oTemporario:Isto, oTemporario:Aquilo, basta :Isto, :Aquilo
Código: Selecionar todos
oTemporario := oConexao:Execute( "SELECT CODIGO, NOME, ENDERECO FROM CLIENTES ORDER BY NOME" )
oTBrowse := { ;
{ "CODIGO", { || Pad( oTemporario:Fields( "CODIGO" ):Value, 10 ) } }, ;
{ "NOME", { || Pad( oTemporario:Fields( "NOME" ):Value, 30 ) } }, ;
{ "ENDERECO", { || Pad( oTemporario:Fields( "ENDERECO" ):Value, 30 ) } } }
BrowseADO( oTemporario, oTBrowse )
oTemporario:Close()
Código: Selecionar todos
oTemporario := oConexao:Execute( "SELECT CODIGO, NOME, ENDERECO FROM CLIENTES ORDER BY NOME" )
WITH OBJECT oTemporario
oTBrowse := { ;
{ "CODIGO", { || Pad( :Fields( "CODIGO" ):Value, 10 ) } }, ;
{ "NOME", { || Pad( :Fields( "NOME" ):Value, 30 ) } }, ;
{ "ENDERECO", { || Pad( :Fields( "ENDERECO" ):Value, 30 ) } } }
BrowseADO( oTemporario, oTBrowse )
:Close()
ENDWITH
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/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
Código: Selecionar todos
cQuery:= "SELECT LOGGERAL_NUMNOT, LOGGERAL_CODPRO, LOGGERAL_DATMOV, LOGGERAL_TIPMOV, LOGGERAL_CODVEN, LOGGERAL_CLIFOR, LOGGERAL_QUANT, LOGGERAL_VALUNI, LOGGERAL_OPERADOR from loggeral"
oTemporario := oCn:EXECUTE(cQuery)
INIT DIALOG oDlg TITLE "Log Geral - Consulta" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1167,600 CLIPPER NOEXIT
ThisBRW := oDlg
@ 4,70 BROWSE oBrowse1 ARRAY OF oDlg SIZE 1160,460 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS
oBrowse1:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)
oBrowse1:aArray := oTemporario
oBrowse1:AddColumn( HColumn():New( "Nr.NOTA",{|v,o|o:aArray[o:nCurrent,1]},"C",16,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Codigo",{|v,o|o:aArray[o:nCurrent,2]},"C",10,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Movimento",{|v,o|o:aArray[o:nCurrent,3]},"D",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Tipo",{|v,o|o:aArray[o:nCurrent,4]},"N",1,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Vendedor",{|v,o|o:aArray[o:nCurrent,5]},"N",4,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Cli/For",{|v,o|o:aArray[o:nCurrent,6]},"C",10,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Quantidade",{|v,o|o:aArray[o:nCurrent,7]},"N",14,2,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Valor Unit.",{|v,o|o:aArray[o:nCurrent,8]},"N",14,2,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Operador",{|v,o|o:aArray[o:nCurrent,9]},"C",20,0,.F., ) )
@ 8,-1 TOOLBAR oToolbar1 SIZE 1160,40 ;
oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| DBCLOSEALL(), oDlg:Close() },'Sair da rotina','', "oToolbutton14")
oToolbar1:CreateTool()
ACTIVATE DIALOG oDlg CENTER
oCn:Close()
RETURN NIL
STATIC FUNCTION MySqlConnection( cServer, cDatabase, cUser, cPassword, nPort )
LOCAL cnConnection
hb_Default( @nPort, 3306 )
cnConnection:= win_OleCreateObject( "ADODB.Connection" )
cnConnection:ConnectionString := iif( win_OsIs10(), "Provider=MSDASQL;", "" )
cnConnection:ConnectionString += "Driver={MariaDB ODBC 3.1 Driver};"
cnConnection:ConnectionString += ;
"Server=" + cServer + ";" + ;
"Port=" + Ltrim( Str( nPort ) ) + ";" + ;
"Stmt=;" + ;
"Database=" + cDatabase + ";" + ;
"User=" + cUser + ";" + ;
"Password=" + cPassword + ";" + ;
"Collation=utf8_general_ci;" + ;
"AUTO_RECONNECT=1;" + ;
"COMPRESSED_PROTO=0;" + ;
"PAD_SPACE=1"
cnConnection:CursorLocation := 3
cnConnection:CommandTimeOut := 600 // seconds
cnConnection:ConnectionTimeOut := 600 // seconds
RETURN cnConnection
STATIC FUNCTION win_OsIs10(); RETURN .T.Error WINOLE/1016 Argument error (DOS Error -2147352562)
Called from ->WIN_OLEAUTO:__OPARRAYINDEX(0)
Called from CONSULTALOGGERALMARIADB.PRG->LOGGERALMARIADB(40) essa linha (oBrowse1:AddColumn( HColumn():New( "Nr.NOTA",{|v,o|o:aArray[o:nCurrent,1]},"C",16,0,.F., ) ))
Called from SGC.PRG->(b)MAIN(367)
Called from source\winapi\htool.prg->HTOOLBAR:NOTIFY(414)
Called from source\winapi\hcwindow.prg->ONNOTIFY(263)
Called from source\winapi\hcwindow.prg->(b)(_INITSTATICS00005)(0)
Called from source\winapi\hcwindow.prg->HWINDOW:ONEVENT(191)
Called from source\winapi\hdialog.prg->HDIALOG:ONEVENT(219)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from source\winapi\hdialog.prg->HDIALOG:ACTIVATE(156)
Called from SGC.PRG->MAIN(930)
HWGUI 2.22 Build 4
Date:14/03/2020
Time:11:52:33
alguém que possa dar uma ajuda , pois não sei o que retorna da query, to perdido
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
O SELECT retorna o recorset do ADO, no formato do ADO.
Acho que tá confundindo com hbMySql() que retorna como array.
Código: Selecionar todos
oRs := cn:Execute( "SELECT CODIGO, NOME.... " )
DO WHILE ! oRs:Eof()
? oRs:Fields( "CODIGO" ):Value // ou oRs:Fields( 0 ):Value
? oRs:Fields( "NOME" ):Value // ou oRs:Fields( 1 ):Value
oRs:MoveNext()
ENDDO
oRs:Close()
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/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
consegui fazer a coisa funcionar
MARIADB + ADO + HWGUI
A TELA FICOU ASSIM , FALTA AJUSTES MAS ja deu uma boa iluminada
MARIADB + ADO + HWGUI
Código: Selecionar todos
/*
TITULO : SISTEMA DE GEST¦O DE COMERCIO
DATA : 14/03/2020
PROGRAMA : CONSULTALOGGERAL.PRG
COMENTARIO : CONSULTA LOG GERAL COM MARIADB
*/
#pragma -w0
#pragma -es0
#include "hwgui.ch"
******************************************
FUNCTION LOGGERALMARIADB( )
******************************************
LOCAL oDlg;
, oLabel1, oLabel2, oLabel3;
, obusca, oBrowse1 ;
, oToolbar1;
, oToolbutton1, oToolbutton2, oToolbutton3, oToolbutton4;
, oDatepicker1 , oDatepicker2 ;
, oColuna, bColorBlock ;
, vBusca := "";
, oQuery, oRow;
, aArray, oElemento;
, aResult:= {}
PRIVATE cProgressKey:="" ,dDatepicker1:=(m->dat_hoje - 30), dDatepicker2:=m->dat_hoje, lFiltro:=.T., nCODPRO:=0;
, oLabel5 :="", oLabel7 :="", oLabel10 :="", oLabel11 :="", oLabel6 :="", oLabel9 :="", oLabel12 :="", oLabel18 :=""
oServer := MySqlConnection( "192.168.15.200", "", "sgcroot", "20r13uqse" )
oServer:Open()
oServer:Execute( "USE AMADEU")
oQuery := oServer:Execute( "SELECT LOGGERAL_NUMNOT,";
+ "LOGGERAL_CODPRO,";
+ "LOGGERAL_DATMOV,";
+ "LOGGERAL_TIPMOV,";
+ "LOGGERAL_CODVEN,";
+ "LOGGERAL_CLIFOR,";
+ "LOGGERAL_QUANT,";
+ "LOGGERAL_VALUNI,";
+ "LOGGERAL_OPERADOR ";
+ "from loggeral LIMIT 9" )
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "LOGGERAL_TIPMOV" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()
INIT DIALOG oDlg TITLE "Log Geral - Consulta" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1167,600 CLIPPER NOEXIT
ThisBRW := oDlg
@ 4,70 BROWSE oBrowse1 ARRAY OF oDlg SIZE 1160,460 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS
oBrowse1:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)
oBrowse1:aArray := aResult
oBrowse1:AddColumn( HColumn():New( "Nr.Nota",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Codigo",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Movimento",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Tipo",hwg_ColumnArBlock(),"C",1,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Vendedor",hwg_ColumnArBlock(),"C",4,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Cli/For",hwg_ColumnArBlock(),"C",10,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Quantidade",hwg_ColumnArBlock(),"C",14,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Valor Unit.",hwg_ColumnArBlock(),"C",14,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Operador",hwg_ColumnArBlock(),"C",20,0,.F., ) )
@ 8,-1 TOOLBAR oToolbar1 SIZE 1160,40 ;
// oToolbar1:AddButton("BRW_FIL", , 4, 16, "Aplica" ,{||FILTROLOGGERAL( ),obrowse1:REFRESH()},'Aplica Filtro no Arquivo de Log Geral','', "oToolbutton1")
// oToolbar1:AddButton("BRW_DFIL", , 4, 16, "Remove" ,{||REMOVEFILTROLOGGERAL( ),obrowse1:REFRESH()},'Remover Filtro do Arquivo de Log Geral','', "oToolbutton2")
oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| DBCLOSEALL(), oDlg:Close() },'Sair da rotina','', "oToolbutton14")
oToolbar1:CreateTool()
ACTIVATE DIALOG oDlg CENTER
oServer:Close()
RETURN NIL
FUNCTION MySqlConnection( cServer, cDatabase, cUser, cPassword, nPort )
LOCAL cnConnection
hb_Default( @nPort, 3306 )
cnConnection:= win_OleCreateObject( "ADODB.Connection" )
cnConnection:ConnectionString := iif( win_OsIs10(), "Provider=MSDASQL;", "" )
cnConnection:ConnectionString += "Driver={MariaDB ODBC 3.1 Driver};"
cnConnection:ConnectionString += ;
"Server=" + cServer + ";" + ;
"Port=" + Ltrim( Str( nPort ) ) + ";" + ;
"Stmt=;" + ;
"Database=" + cDatabase + ";" + ;
"User=" + cUser + ";" + ;
"Password=" + cPassword + ";" + ;
"Collation=utf8_general_ci;" + ;
"AUTO_RECONNECT=1;" + ;
"COMPRESSED_PROTO=0;" + ;
"PAD_SPACE=1"
cnConnection:CursorLocation := 3
cnConnection:CommandTimeOut := 600 // seconds
cnConnection:ConnectionTimeOut := 600 // seconds
RETURN cnConnection
FUNCTION win_OsIs10(); RETURN .T.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Browse com ADO
Olá!
Parabéns!
Dicas:
1 - Sempre declare as variáveis antes de as utilizar.
2 - Procure nunca usar variáveis PRIVATE e PUBLIC. Use LOCAL ou STATIC
3 - Este bloco de código
Pode ser trocado por apenas uma linha, utilizando-se um recurso do ADO que coloca o conteúdo de um record set em um array:
Ou na declaração do browse:
Parabéns!
Dicas:
1 - Sempre declare as variáveis antes de as utilizar.
2 - Procure nunca usar variáveis PRIVATE e PUBLIC. Use LOCAL ou STATIC
3 - Este bloco de código
Código: Selecionar todos
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "LOGGERAL_TIPMOV" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDOCódigo: Selecionar todos
aResult := oQuery:getRows()Código: Selecionar todos
oBrowse1:aArray := oQuery:getRows() []´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
Fazendo as correções ficou assim
resultado final , muito bom
Código: Selecionar todos
oBrowse1:AddColumn( HColumn():New( "Nr.Nota",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Codigo",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Movimento",hwg_ColumnArBlock(),"D",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Tipo", hwg_ColumnArBlock(),"N",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Vendedor",hwg_ColumnArBlock(),"N",10,0,.F.,1,2,'9999' ) )
oBrowse1:AddColumn( HColumn():New( "Cli/For",hwg_ColumnArBlock(),"C",10,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Quantidade",hwg_ColumnArBlock(),"N",14,2,.F.,1,2,'99999999999.99' ) )
oBrowse1:AddColumn( HColumn():New( "Valor Unit.", hwg_ColumnArBlock(),'N',14,2,.F.,1,2,'@E 99,999,999,999.99' ) )
oBrowse1:AddColumn( HColumn():New( "Operador",hwg_ColumnArBlock(),"C",20,0,.F., ) )HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
fiz o que você falou e trazia os dados de uma linha como uma colunaalxsts escreveu:Olá!
Parabéns!
Dicas:
1 - Sempre declare as variáveis antes de as utilizar.
2 - Procure nunca usar variáveis PRIVATE e PUBLIC. Use LOCAL ou STATIC
3 - Este bloco de códigoPode ser trocado por apenas uma linha, utilizando-se um recurso do ADO que coloca o conteúdo de um record set em um array:Código: Selecionar todos
DO WHILE ! oQuery:Eof() aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,; oQuery:Fields( "LOGGERAL_CODPRO" ):Value,; oQuery:Fields( "LOGGERAL_DATMOV" ):Value,; oQuery:Fields( "LOGGERAL_TIPMOV" ):Value,; oQuery:Fields( "LOGGERAL_CODVEN" ):Value,; oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,; oQuery:Fields( "LOGGERAL_QUANT" ):Value,; oQuery:Fields( "LOGGERAL_VALUNI" ):Value,; oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} ) oQuery:MoveNext() ENDDOOu na declaração do browse:Código: Selecionar todos
aResult := oQuery:getRows()Código: Selecionar todos
oBrowse1:aArray := oQuery:getRows()
pode ser a versão do harbour 3.2 que eu tenho que pode estar errada
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
Lembro de alguma alteração no Harbour sobre transferir array.Fernando queiroz escreveu:fiz o que você falou e trazia os dados de uma linha como uma colunapode ser a versão do harbour 3.2 que eu tenho que pode estar errada
Inclusive, se não me engano, não tem no Harbour 3.4.
Lembro de ter lido mensagem.
Na época tinha a ver com gravar as colunas direto no Excel, e não dava certo.
Se não me engano era esse problema, mas só detectaram pra Excel.
Lógico, ao resolver, já resolveria pro ADO também.
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 com ADO
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 com ADO
Só comentário extra:
É tipo.... gravar o array diretamente no Excel, ou vice-versa.
Tem a ver com a hbwin, e o tratamento de OLE "CreateObject()"
No caso do Excel, é a diferença entre gravar uma coluna de cada vez, ou a planilha inteira de uma vez.
Então... o assunto é interessante, porque o ganho de velocidade pode ser extremo.
Por isso lembrei dele, porque um dia poderia me ser útil.
O problema da época era essa inversão do array multidimensional.
É tipo.... gravar o array diretamente no Excel, ou vice-versa.
Tem a ver com a hbwin, e o tratamento de OLE "CreateObject()"
No caso do Excel, é a diferença entre gravar uma coluna de cada vez, ou a planilha inteira de uma vez.
Então... o assunto é interessante, porque o ganho de velocidade pode ser extremo.
Por isso lembrei dele, porque um dia poderia me ser útil.
O problema da época era essa inversão do array multidimensional.
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/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
QUINTAS fazendo como fiz na rotina o legal é que posso fazer algumas coisas no query e depois so mudar a coluna de lugar , facilita muito
ex:
onde o STATUS_GERAL nao existe no banco , eu criei ele baseado em uma condição do LOGGERAL_TIPMOV e já joguei no local certo como o TIPO
ex:
Código: Selecionar todos
oQuery := oServer:Execute( "SELECT LOGGERAL_NUMNOT,";
+ "LOGGERAL_CODPRO,";
+ "LOGGERAL_DATMOV,";
+ "LOGGERAL_CODVEN,";
+ "LOGGERAL_CLIFOR,";
+ "LOGGERAL_QUANT,";
+ "LOGGERAL_VALUNI,";
+ "LOGGERAL_OPERADOR, ";
+ "CASE WHEN LOGGERAL_TIPMOV IS TRUE THEN 'ENTRADA' ELSE 'SAIDAS' END AS STATUS_GERAL ";
+ "from loggeral WHERE LOGGERAL_CODPRO = " + STRZERO(nCODPRO,7,0);
+ " AND LOGGERAL_DATMOV BETWEEN '" ;
+ STRZERO(YEAR(dDatepicker1),4,0) + "-" + STRZERO(MONTH(dDatepicker1),2,0) + "-" + STRZERO(DAY(dDatepicker1),2,0);
+ "' AND '";
+ STRZERO(YEAR(dDatepicker2),4,0) + "-" + STRZERO(MONTH(dDatepicker2),2,0) + "-" + STRZERO(DAY(dDatepicker2),2,0);
+ "'" )
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "STATUS_GERAL" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
Browse com ADO
Ola Fernando,
Não é possível você postar toda a rotina de como você fez o filtro desta pesquisa em ADO/MARIADB, para eu poder estudar, pois por mais que eu tente não consigo entender como funciona.
Ja li muito e vi muito exemplos postados pelo Quintas e pelo Simões, mais não tem jeito, pela complexidade, não consigo fazer funcionar na HWGUI.
Com este teu exemplo por ser básico, consegui fazer algo, mais parei ai...
Se você também tiver um exemplo básico de como salvar os dados em uma alteração, inclusao, exclução, com ADO/MARIADB para eu estudar e ver como funciona ficaria muito agradecido, pois os exemplos que encontrei são muito complexos, e meu tico/teco se perdem... kkkk
Não é possível você postar toda a rotina de como você fez o filtro desta pesquisa em ADO/MARIADB, para eu poder estudar, pois por mais que eu tente não consigo entender como funciona.
Ja li muito e vi muito exemplos postados pelo Quintas e pelo Simões, mais não tem jeito, pela complexidade, não consigo fazer funcionar na HWGUI.
Com este teu exemplo por ser básico, consegui fazer algo, mais parei ai...
Se você também tiver um exemplo básico de como salvar os dados em uma alteração, inclusao, exclução, com ADO/MARIADB para eu estudar e ver como funciona ficaria muito agradecido, pois os exemplos que encontrei são muito complexos, e meu tico/teco se perdem... kkkk
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
Código: Selecionar todos
/*
TITULO : SISTEMA DE GEST¦O DE COMERCIO
DATA : 14/03/2020
PROGRAMA : CONSULTALOGGERAL.PRG
COMENTARIO : CONSULTA LOG GERAL COM MARIADB
*/
#pragma -w0
#pragma -es0
#include "hwgui.ch"
******************************************
FUNCTION LOGGERALMARIADB( )
******************************************
LOCAL oDlg;
, oLabel1, oLabel2, oLabel3;
, obusca, oBrowse1 ;
, oToolbar1;
, oToolbutton1, oToolbutton2, oToolbutton3, oToolbutton4;
, oDatepicker1 , oDatepicker2 ;
, oColuna, bColorBlock ;
, vBusca := "";
, oQuery, oRow;
, aArray, oElemento;
, aResult:= {}
PRIVATE cProgressKey:="" ,dDatepicker1:=(m->dat_hoje - 30), dDatepicker2:=m->dat_hoje, lFiltro:=.T., nCODPRO:=0;
, oLabel5 :="", oLabel7 :="", oLabel10 :="", oLabel11 :="", oLabel6 :="", oLabel9 :="", oLabel12 :="", oLabel18 :="";
IF ! ABRE_PRODUTOS( )
DBCLOSEALL()
RETURN
END
oServer := MySqlConnection( "192.168.15.200", "", "sgcroot", "20r13uqse" )
oServer:Open()
oServer:Execute( "USE AMADEU")
oQuery := oServer:Execute( "SELECT LOGGERAL_NUMNOT,";
+ "LOGGERAL_CODPRO,";
+ "LOGGERAL_DATMOV,";
+ "LOGGERAL_CODVEN,";
+ "LOGGERAL_CLIFOR,";
+ "LOGGERAL_QUANT,";
+ "LOGGERAL_VALUNI,";
+ "LOGGERAL_OPERADOR, ";
+ "CASE WHEN LOGGERAL_TIPMOV IS TRUE THEN 'ENTRADA' ELSE 'SAIDAS' END AS STATUS_TIPO ";
+ "from loggeral WHERE LOGGERAL_DATMOV BETWEEN '";
+ STRZERO(YEAR(dDatepicker1),4,0) + "-" + STRZERO(MONTH(dDatepicker1),2,0) + "-" + STRZERO(DAY(dDatepicker1),2,0);
+ "' AND '";
+ STRZERO(YEAR(dDatepicker2),4,0) + "-" + STRZERO(MONTH(dDatepicker2),2,0) + "-" + STRZERO(DAY(dDatepicker2),2,0);
+ "'" )
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "STATUS_TIPO" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()
INIT DIALOG oDlg TITLE "Log Geral - Consulta" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1167,600 CLIPPER NOEXIT
ThisBRW := oDlg
@ 4,70 BROWSE oBrowse1 ARRAY OF oDlg SIZE 1160,495 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS
oBrowse1:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)
oBrowse1:aArray := aResult
oBrowse1:AddColumn( HColumn():New( "Nr.Nota",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Codigo",hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Movimento",hwg_ColumnArBlock(),"D",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Tipo", hwg_ColumnArBlock(),"C",12,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Vendedor",hwg_ColumnArBlock(),"N",10,0,.F.,1,2,'9999' ) )
oBrowse1:AddColumn( HColumn():New( "Cli/For",hwg_ColumnArBlock(),"C",10,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Quantidade",hwg_ColumnArBlock(),"N",14,3,.F.,1,2,'99999999999.999' ) )
oBrowse1:AddColumn( HColumn():New( "Valor Unit.", hwg_ColumnArBlock(),'N',14,2,.F.,1,2,'@E 99,999,999,999.99' ) )
oBrowse1:AddColumn( HColumn():New( "Operador",hwg_ColumnArBlock(),"C",20,0,.F., ) )
@ 8,-1 TOOLBAR oToolbar1 SIZE 1160,40 ;
oToolbar1:AddButton("BRW_FIL", , 4, 16, "Filtra" ,{||oBrowse1:aArray := FILTROLOGGERAL( ), obrowse1:REFRESH()},'Filtra o Arquivo de Log Geral','', "oToolbutton1")
oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| DBCLOSEALL(), oDlg:Close() },'Sair da rotina','', "oToolbutton14")
oToolbar1:CreateTool()
ADD STATUS PANEL TO oDlg HEIGHT 30 PARTS 200,120,300
@ 4,43 SAY oLabel1 CAPTION "Codigo" SIZE 138,25 ;
STYLE SS_CENTER +WS_DLGFRAME
@ 150,43 GET oEdit1 VAR nCODPRO SIZE 90,25 STYLE ES_RIGHT PICTURE '9999999' MAXLENGTH 7
@ 245,43 OWNERBUTTON oOwnerbutton1 SIZE 24,24 ;
TEXT '' ;
COORDINATES 0, 0, 0, 0 ;
BITMAP 'FINDBMP' FROM RESOURCE TRANSPARENT;
COORDINATES 0, 0, 0, 0 ;
ON CLICK {|| ThisBRW:oEdit1:SETFOCUS(), CONSULTA_PRODUTOS( ), nCODPRO := VAL(PRODUTOS->CODPRO), ThisBRW:oEdit1:REFRESH() }
@ 283,47 SAY oLabel2 CAPTION "Periodo:" SIZE 56,18
@ 349,43 GET DATEPICKER oDatepicker1 VAR dDatepicker1 SIZE 125,24 VALID {|| (dDatepicker1 < dDatepicker2) }
@ 482,47 SAY oLabel3 CAPTION "A" SIZE 10,18
@ 499,43 GET DATEPICKER oDatepicker2 VAR dDatepicker2 SIZE 125,24
ACTIVATE DIALOG oDlg CENTER
DBCLOSEALL()
oServer:Close()
RETURN NIL
************************************************************************************
FUNCTION MySqlConnection( cServer, cDatabase, cUser, cPassword, nPort )
************************************************************************************
LOCAL cnConnection
hb_Default( @nPort, 3306 )
cnConnection:= win_OleCreateObject( "ADODB.Connection" )
cnConnection:ConnectionString := iif( win_OsIs10(), "Provider=MSDASQL;", "" )
cnConnection:ConnectionString += "Driver={MariaDB ODBC 3.1 Driver};"
cnConnection:ConnectionString += ;
"Server=" + cServer + ";" + ;
"Port=" + Ltrim( Str( nPort ) ) + ";" + ;
"Stmt=;" + ;
"Database=" + cDatabase + ";" + ;
"User=" + cUser + ";" + ;
"Password=" + cPassword + ";" + ;
"Collation=utf8_general_ci;" + ;
"AUTO_RECONNECT=1;" + ;
"COMPRESSED_PROTO=0;" + ;
"PAD_SPACE=1"
cnConnection:CursorLocation := 3
cnConnection:CommandTimeOut := 600 // seconds
cnConnection:ConnectionTimeOut := 600 // seconds
RETURN cnConnection
******************************************
FUNCTION win_OsIs10(); RETURN .T.
******************************************
*****************************************
STATIC FUNCTION onDlgInit( )
*****************************************
hwg_WriteStatus( ThisBRW,1,"Tabela: " + Alias())
hwg_WriteStatus( ThisBRW,2,LTrim(Str( RecNo(),8))+ "/" +LTrim(Str( Lastrec(),8)))
hwg_WriteStatus( ThisBRW,3,"Ordem: Codigo/Data Movimento")
RETURN Nil
********************************************************
STATIC FUNCTION FILTROLOGGERAL( )
********************************************************
LOCAL nI, aResult:={}
// FOR nI = Len( aResult ) TO 1 STEP -1
// hb_ADel( aResult, nI, .T. )
// NEXT
IF nCODPRO # 0
oQuery := oServer:Execute( "SELECT LOGGERAL_NUMNOT,";
+ "LOGGERAL_CODPRO,";
+ "LOGGERAL_DATMOV,";
+ "LOGGERAL_CODVEN,";
+ "LOGGERAL_CLIFOR,";
+ "LOGGERAL_QUANT,";
+ "LOGGERAL_VALUNI,";
+ "LOGGERAL_OPERADOR, ";
+ "CASE WHEN LOGGERAL_TIPMOV IS TRUE THEN 'ENTRADA' ELSE 'SAIDAS' END AS STATUS_TIPO ";
+ "from loggeral WHERE LOGGERAL_CODPRO = " + STRZERO(nCODPRO,7,0);
+ " AND LOGGERAL_DATMOV BETWEEN '" ;
+ STRZERO(YEAR(dDatepicker1),4,0) + "-" + STRZERO(MONTH(dDatepicker1),2,0) + "-" + STRZERO(DAY(dDatepicker1),2,0);
+ "' AND '";
+ STRZERO(YEAR(dDatepicker2),4,0) + "-" + STRZERO(MONTH(dDatepicker2),2,0) + "-" + STRZERO(DAY(dDatepicker2),2,0);
+ "'" )
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "STATUS_TIPO" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()
ELSE
oQuery := oServer:Execute( "SELECT LOGGERAL_NUMNOT,";
+ "LOGGERAL_CODPRO,";
+ "LOGGERAL_DATMOV,";
+ "LOGGERAL_CODVEN,";
+ "LOGGERAL_CLIFOR,";
+ "LOGGERAL_QUANT,";
+ "LOGGERAL_VALUNI,";
+ "LOGGERAL_OPERADOR, ";
+ "CASE WHEN LOGGERAL_TIPMOV IS TRUE THEN 'ENTRADA' ELSE 'SAIDAS' END AS STATUS_TIPO ";
+ "from loggeral WHERE LOGGERAL_DATMOV BETWEEN '";
+ STRZERO(YEAR(dDatepicker1),4,0) + "-" + STRZERO(MONTH(dDatepicker1),2,0) + "-" + STRZERO(DAY(dDatepicker1),2,0);
+ "' AND '";
+ STRZERO(YEAR(dDatepicker2),4,0) + "-" + STRZERO(MONTH(dDatepicker2),2,0) + "-" + STRZERO(DAY(dDatepicker2),2,0);
+ "'" )
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "STATUS_TIPO" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()
ENDIF
RETURN aResult
****************************************
STATIC FUNCTION CONSULTA_PRODUTOS( )
****************************************
LOCAL oDlgPro ;
, oLabel1, oLabel2 ;
, oBrowse4 ;
, oColuna, bColorBlock, vBusca ;
, oToolbar1 ;
, nKeyPress
PRIVATE cProgressKey:=""
DBSELECTAREA("PRODUTOS")
ORDSETFOCUS( 2 )
PRODUTOS->(dbgotop())
INIT DIALOG oDlgPro TITLE "Nota de Pedido - Consulta Produtos" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1006,582 CLIPPER NOEXIT NOCLOSABLE ;
ON INIT {|This| onDlgInit3( This, oDlgPro ) }
PRODUTOSBRW := oDlgPro
@ 4,70 BROWSE oBrowse4 DATABASE OF oDlgPro SIZE 1000,480 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
ON POSCHANGE {|| hwg_WriteStatus( oDlgPro,2,LTrim(Str( RecNo(),8))+ "/" +LTrim(Str( Lastrec(),8))) } ;
ON CLICK {|| PESQUISAPRODUTO_onClick( ) } ;
ON KEYDOWN {|oBrowse4,nKeyPress| PESQUISAPRODUTO_onKeyDown( oBrowse4,nKeyPress ) }
oBrowse4:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
oBrowse4:oFont := HFont():Add( '',0,-18,700,,,)
oBrowse4:freeze := 2
// oBrowse4:alias := 'PRODUTOS'
// SELECT (oBrowse4:alias)
bColorBlock :={|| IIF(PRODUTOS->ESTATU + PRODUTOS->ESTL02 = 0.0000 ,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
oBrowse4:AddColumn( HColumn():New('Codigo', FieldBlock( 'codpro' ) ,'C',9, 0 ,.F.,1,2,'@R 999999-9',,,,,;
{|| Ordsetfocus(1), Dbgotop(), obrowse4:Refresh(), vBusca:="" , ;
hwg_WriteStatus( oDlgPro,3,"Ordem: Codigo ") } ,,,,))
oBrowse4:AddColumn( HColumn():New('Descrição/Nome Produto', FieldBlock( 'despro' ) ,'C',58, 0 ,.F.,1,,'@S58',,,,,;
{|| Ordsetfocus(2), Dbgotop(), obrowse4:Refresh(), vBusca:="" , ;
hwg_WriteStatus( oDlgPro,3,"Ordem: Descriçao") } ,,,,))
oBrowse4:AddColumn( HColumn():New('Unidade', FieldBlock( 'TIPUNI' ) ,'C',9, 0 ,.F.,1,,,,,,,,,,,))
oBrowse4:AddColumn( HColumn():New('Preço Venda', FieldBlock( 'preven' ) ,'N',14, 2 ,.F.,1,2,'@E 999,999.99',,,,,,,,,))
oBrowse4:AddColumn( HColumn():New('Estoque Loja', {|| IF(PROSER = "1",ESTATU,ESTATU*(-1)) } ,'N',12, 3 ,.F.,1,2,,,,,,,,,,))
// bColorBlock :={|| IIF(PRODUTOS->ESTATU + PRODUTOS->ESTL02 = 0.0000 ,{255, 16777215 ,16777215,255 },{0,16777215,, }) }
FOR EACH oColuna IN oBrowse4:aColumns
oColuna:bColorBlock := bColorBlock
NEXT
@ 8,-1 TOOLBAR oToolbar1 SIZE 945,40 ;
oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| oDlgPro:Close() },'Sair da rotina','', "oToolbutton8")
oToolbar1:CreateTool()
ADD STATUS PANEL TO oDlgPro HEIGHT 30 PARTS 200,120,300
@ 4,43 SAY oLabel1 CAPTION "Pesquisar" SIZE 138,25 ;
STYLE SS_CENTER +WS_DLGFRAME
@ 150,43 SAY oLabel2 CAPTION "" SIZE 410,25 ;
STYLE WS_BORDER;
COLOR 16777215 BACKCOLOR 255
ACTIVATE DIALOG oDlgPro CENTER
RETURN .T.
***********************************************************************************
STATIC FUNCTION onDlgInit3( This, oDlgPro )
hwg_WriteStatus( oDlgPro,1,"Tabela: " + Alias())
hwg_WriteStatus( oDlgPro,2,LTrim(Str( RecNo(),8))+ "/" +LTrim(Str( Lastrec(),8)))
hwg_WriteStatus( oDlgPro,3,"Ordem: Descrição")
RETURN .T.
******************************************************
STATIC FUNCTION PESQUISAPRODUTO_onClick( )
IF hwg_LastKey() == MK_LBUTTON
PRODUTOSBRW:Close()
ENDIF
RETURN .T.
********************************************************
STATIC FUNCTION PESQUISAPRODUTO_onKeyDown( oBrowse4,nKey )
LOCAL nPosicao:=0, nKeyPress:=nkey
LOCAL cRegEx := "[a-zA-Z0-9 ]{1}"
KSETCAPS(.T.)
aResult:=HB_RegExALL( cRegEx, Chr(nKeyPress) )
IF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ "34|33|37|38|39|40|20|16"
cProgressKey:=""
PRODUTOSBRW:oLabel2:settext(cProgressKey)
RETURN .T.
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [90]
nKeyPress := 90
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [96]
nKeyPress := 48
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [97]
nKeyPress := 49
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [98]
nKeyPress := 50
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [99]
nKeyPress := 51
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [100]
nKeyPress := 52
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [101]
nKeyPress := 53
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [102]
nKeyPress := 54
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [103]
nKeyPress := 55
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [104]
nKeyPress := 56
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [105]
nKeyPress := 57
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [106]
nKeyPress := 42
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [190]
nKeyPress := 46
ELSEIF nKeyPress == Asc("8") .AND. hwg_isCtrlShift( .F.,.T. )
nKeyPress := 42
ENDIF
IF nKeyPress = VK_RETURN .OR. nKeyPress = VK_ESCAPE
PRODUTOSBRW:Close()
RETURN .T.
ENDI
// IF IsAscii(Chr(nKeyPress)) .AND. nKeyPress # 8
If nKeyPress # 8
cProgressKey += Chr(nKeyPress)
nPosicao:=AScan(PRODUTOSBRW:oBrowse4:aArray,cProgressKey)
PRODUTOSBRW:oLabel2:settext(cProgressKey)
PRODUTOSBRW:oBrowse4:TOP()
DBSEEK(cProgressKey,.T.)
ELSEIF nKeyPress = 8 .AND. Len(cProgressKey) >= 1
cProgressKey:=Left(cProgressKey,Len(cProgressKey) - 1)
nPosicao:=AScan(PRODUTOSBRW:oBrowse4:aArray,cProgressKey)
PRODUTOSBRW:oLabel2:settext(cProgressKey)
PRODUTOSBRW:oBrowse4:TOP()
DBSEEK(cProgressKey,.T.)
ENDIF
IF nPosicao # 0
oBrowse4:rowPos := nPosicao
Eval( PRODUTOSBRW:oBrowse4:bGoTo, PRODUTOSBRW:oBrowse4, nPosicao )
PRODUTOSBRW:oBrowse4:Refresh()
ENDIF
return .t.
nao tive muita preocupação de deixar tudo bonitinho.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
Browse com ADO
Fernando,
Muito obrigado.
E so pra eu tentar entender como funciona, como sou leigo (burro mesmo... kkkk) e com do básico que consigo dar inicio e ir avançando.
Valeu...
Muito obrigado.
E so pra eu tentar entender como funciona, como sou leigo (burro mesmo... kkkk) e com do básico que consigo dar inicio e ir avançando.
Valeu...
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br