Página 3 de 4

Browse pra ADO

Enviado: 15 Abr 2020 15:30
por Itamar M. Lins Jr.
Ola!
O usuário apenas quer uma solução para o problema dele, mas tá difícil dele obter com tanta discussão.
Houve uma mistura neste tópico.
Vc respondeu agora rs:filter etc..

E ele perguntou para tbrowse, colocaram hwgui(não tem tbrowse) pelo meio... Mas no começo a postagem era outra.

Saudações,
Itamar M. Lins Jr.

Browse pra ADO

Enviado: 15 Abr 2020 15:41
por Itamar M. Lins Jr.
Ola!
E o pessoal do XHarbour? Não tem SQLMIX, então ADO interessa.
Quem usa xHarbour e quer usar SQLMIX, deverá mudar(migrar) para o Harbour, igual estão fazendo até o "cidadão" lá do site que usava xHarbour(Mel Smith) já mudou para Harbour. Inclusive recompilou todo o CGI que era no xHarbour... Mudou bem pouca coisa...
Quem usa xHarbour e SQLRDD ai não tem nem ADO nem SQLMIX, nem Harbour que dê jeito.

Saudações,
Itamar M. Lins Jr.

Browse pra ADO

Enviado: 15 Abr 2020 16:22
por MSDN

Browse pra ADO

Enviado: 15 Abr 2020 16:24
por asimoes
Itamar M. Lins Jr. escreveu:Vai distorcer assim lá longe...
Perguntas:
Você já tem alguma aplicação usando SGBD ? queria saber qual é o peixe que você tá querendo vender ainda não entendi direito.

Browse pra ADO

Enviado: 15 Abr 2020 16:30
por Itamar M. Lins Jr.
Ola!
Você já tem alguma aplicação usando SGBD ? queria saber qual é o peixe que você tá querendo vender ainda não entendi direito.
É pq vc não lê, nada do que escrevo, sempre com esse desprezo...

Saudações,
Itamar M. Lins Jr.

Browse pra ADO

Enviado: 15 Abr 2020 16:36
por Itamar M. Lins Jr.
Ola!
Já que o assunto é bom, pq não pensar tbem em Cloud !
Tem muita gente usando, até fiz umas aulas... Youtube... Depois de 1 ano tem que pagar 300 Dólares no pacote mínimo.
A Google te da 300 dolares de crédito para usar(testar) por 1 ano. Vc escolhe seu CPU virtual e qual SO vai colocar nele. Dai é só usar.

Saudações,
Itamar M. Lins Jr.

Browse pra ADO

Enviado: 15 Abr 2020 16:41
por MSDN
Sim, claro que depois tem que pagar, eles fazem isso para chamar cliente, mas é uma boa oportunidade para fazer teste !!

Browse pra ADO

Enviado: 15 Abr 2020 16:45
por Itamar M. Lins Jr.
Ola!
Sim, claro que depois tem que pagar, eles fazem isso para chamar cliente, mas é uma boa oportunidade para fazer teste !!
Eu achei super rápido, tudo de bom, tem backup etc...
O problema é começar a tirar do CLIENTE o processamento, e ele passar a pagar esses serviços, através de nossa intermediação.

Saudações,
Itamar M. Lins Jr.

Browse pra ADO

Enviado: 16 Abr 2020 01:26
por JoséQuintas
Não faço a menor idéia do uso da HWGUI.
Minha tentativa foi esta, no chute.
Com certeza não funcionou.

Código: Selecionar todos

FUNCTION DlgGet

   LOCAL oModDlg, oBrw1, cn, Rs

   INIT DIALOG oModDlg TITLE "About" AT 190,10 SIZE 600,320

   @ 20,16 BROWSE oBrw1 DATABASE SIZE 500,220 ;
      STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL

   cn := ConexaoMySql()
   cn:Open()
   Rs := cn:Execute( "SELECT * FROM JPCIDADE" )
   oBrw1:AddColumn( HColumn():New( "um",{|v,o|Rs:Fields(1):Value},"C",30,0,.F.,DT_CENTER ) )
   oBrw1:AddColumn( HColumn():New( "dois",{|v,o|Rs:Fields(2):Value},"C",30,0,.F.,DT_CENTER ) )
   oBrw1:AddColumn( HColumn():New( "tres",{|v,o|Rs:FIelds(3):Value},"C",30,0,.F.,DT_CENTER ) )
   oBrw1:aColumns[2]:footing := "Age"
   oBrw1:aColumns[2]:lResizable := .F.
   oBrw1:bGoTop := { || rs:MoveFirst() }
   oBrw1:bGoBot := { || rs:MoveLast() }
   oBrw1:bSkip  := { | n | rs:Move( n ) }
   oBrw1:bEof   := { || rs:Eof() }
   oBrw1:bBof   := { || rs:Bof() }
   oBrw1:bGoto  := { | n | rs:Move( n ) }

   @ 210,260 OWNERBUTTON ON CLICK {|| hwg_EndDialog()} ;
      SIZE 180,36 FLAT                                ;
      TEXT "Close" COLOR hwg_ColorC2N("0000FF")

   ACTIVATE DIALOG oModDlg
   Rs:Close()
   cn:Close()

   RETURN NIL

Browse pra ADO

Enviado: 16 Abr 2020 01:31
por JoséQuintas
Faltou a conexão:

Código: Selecionar todos

FUNCTION ConexaoMySql()

   LOCAL oConexao := win_OleCreateObject( "ADODB.Connection" )
   LOCAL cPath := hb_cwd()

   oConexao:ConnectionString := "Provider=Advantage OLE DB Provider;" + ;
      "Mode=Share Deny None;" + ;
      "Show Deleted Records in DBF Tables with Advantage=False;" + ;
       "Data Source=" + cPath + ";Advantage Server Type=ADS_Local_Server;" + ;
       "TableType=ADS_CDX;Security Mode=ADS_IGNORERIGHTS;" + ;
       "Lock Mode=Compatible;" + ;
       "Use NULL values in DBF Tables with Advantage=True;" + ;
       "Exclusive=No;Deleted=No;"
   oConexao:CursorLocation := 3
   oConexao:CommandTimeOut := 20

   RETURN oConexao
Me limitei a isso.
Detesto LIB gráfica, porque tem que ficar corrigindo tudo que é arquivo.
Por isso deixando pra mexer depois do MySQL.

Browse pra ADO

Enviado: 16 Abr 2020 12:57
por MSDN
A grosso modo o problema não é a API do Windows que é utilizada pela HwGUI, MiniGUI, Delphi, etc, senão ninguém usava (o mundo todo), o ponto central é aceitar que programar um software só com caracteres na interface e um software com elementos gráficos na interface não muda o conceito que os dois são um "software", só que o software A é um carro que usa carburador, e o software B é um carro que usa injeção direta de combustível, tem turbo, start-stop, etc. Então, não precisa corrigir nada, só aceitar que é diferente !!

Browse pra ADO

Enviado: 16 Abr 2020 18:56
por JoséQuintas
MSDN escreveu: Então, não precisa corrigir nada, só aceitar que é diferente !!
Não é isso que comentam sobre HWGUI, que inclusive até a semana passada nem sequer compilava.
Comparar com Delphi... aí exagerou.

Browse pra ADO

Enviado: 16 Abr 2020 19:09
por JoséQuintas
Mas ok, não tem a ver com GUI ou não GUI.
HWGUI é limitada.
Pra ter acesso aos codeblocks, só definindo DATABASE, mas isso foi criado exclusivamente pra DBF.
Em HWGUI só há duas opções: DBF ou ARRAY
Removi HWGUI da minha lista de opções, só servia pro meu sistema velho em DBF.

Browse pra ADO

Enviado: 16 Abr 2020 21:25
por MSDN
A HwGUI na minha visão tem 4 coisas muito importantes :
1 - Usa os termos SAY e GET, além das validações e pictures associados, o que ajuda muito quem vem do Clipper, e o Browse é muito parecido com o TBrowse
2 - Ela é bem construída internamente, é muito leve e enxuta, e isso é bom !
3 - Compila e executa nos 2 maiores sistemas operacionais do mundo, Windows e Linux, isso é um grande diferencial !
4 - Tem o Designer, não é maravilhoso, mas se for comparar ele com a "IDE" (que não é IDE) da MiniGUI, dá um banho !
Porém, o que eu acho que falta pra ela ficar 100% é a parte dos exemplos, tem muito pouco, não mostra realmente o que se pode fazer com ela, dai desanima quem deseja adotá-la, e falo isso comparando com a MiniGUI Extended que eu uso, onde tem toneladas de exemplos, até o cego Jeremias consegue se achar !

Browse pra ADO

Enviado: 17 Abr 2020 01:11
por Fernando queiroz
QUINTAS segue uma ideia de como funciona na HWGUI achei super fácil

Código: Selecionar todos

	cQuery := "SELECT ENTRADA_UFORNEC, ";
				   + "ENTRADA_c_xNome, ";
				   + "ENTRADA_b_serie, ";
				   + "ENTRADA_b_nNF, ";
				   + "ENTRADA_b_dhEmi, ";
				   + "ENTRADA_DATMOV, ";
				   + "ENTRADA_w_vNF, ";
				   + "ENTRADA_ST, ";
				   + "ENTRADA_b_natOp, ";
				   + "ENTRADA_a_Id, ";
				   + "ENTRADA_QUEM_BLOQ, ";
				   + "IF(ENTRADA_TIPOENTR=1,'DEPOSITO','LOJA') AS ENTRADA_TIPOENTR, ";
				   + "ENTRADA_ID ";
				   + "from ENTRADA ";
				   + cAlvo_Consulta

	oQuery := oServer:Execute(cQuery)

	DO WHILE ! oQuery:Eof()
		aAdd( aResult, {oQuery:Fields( "ENTRADA_UFORNEC" ):Value,;
						oQuery:Fields( "ENTRADA_c_xNome" ):Value,;
						oQuery:Fields( "ENTRADA_b_serie" ):Value,;
						oQuery:Fields( "ENTRADA_b_nNF" ):Value,;
						oQuery:Fields( "ENTRADA_b_dhEmi" ):Value,;
						oQuery:Fields( "ENTRADA_DATMOV" ):Value,;
						oQuery:Fields( "ENTRADA_w_vNF" ):Value,;
						oQuery:Fields( "ENTRADA_ST" ):Value,;
						oQuery:Fields( "ENTRADA_b_natOp" ):Value,;
						oQuery:Fields( "ENTRADA_a_Id" ):Value,;
						oQuery:Fields( "ENTRADA_QUEM_BLOQ" ):Value,;
						oQuery:Fields( "ENTRADA_TIPOENTR" ):Value,;
						oQuery:Fields( "ENTRADA_ID" ):Value} ) 

		oQuery:MoveNext()
	ENDDO
apos pegar os dados da SGDB é so usar o BROWSE assim

Código: Selecionar todos

	@ 4,70 BROWSE oBrowse1 ARRAY OF oDlg SIZE 1000,497 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
			ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
			ON CLICK {|| oBrowse1_onClick( oServer, oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 10] ), oBrowse1:aArray := CARREGA_ENTRADAS( oServer, "ORDER BY ENTRADA_ID DESC" ), obrowse1:Refresh()  } ;
			ON KEYDOWN {|oBrowse1,nKeyPress| oBrowse1_onKeyDown( oBrowse1,nKeyPress, oDlg, oServer ) };
			ON POSCHANGE {||IF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 8] = 1,;
							(oToolbar1:oToolbutton4:DISABLE( ),oToolbar1:oToolbutton5:DISABLE( ),oToolbar1:oToolbutton7:ENABLE( ),oToolbar1:oToolbutton9:ENABLE( ))   ,;
							(oToolbar1:oToolbutton4:ENABLE( ),oToolbar1:oToolbutton5:ENABLE( ),oToolbar1:oToolbutton7:DISABLE( ),oToolbar1:oToolbutton9:DISABLE( ))  ) }

		oBrowse1:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
		oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)	
		oBrowse1:freeze := 2
		oBrowse1:aArray := CARREGA_ENTRADAS( oServer, "ORDER BY ENTRADA_ID DESC" ) 

		oBrowse1:AddColumn( HColumn():New('CÓDIGO', hwg_ColumnArBlock() ,'C',9, 0 ,.F.,1,2,,,,,,;
					{|| oBrowse1:aArray := CARREGA_ENTRADAS( oServer, "ORDER BY ENTRADA_UFORNEC" ), MEMVAR->cAlvo_Consulta:="ENTRADA_UFORNEC",obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: CÓDIGO") } ,,,,))
					
		oBrowse1:AddColumn( HColumn():New('NOME FORNECEDOR', hwg_ColumnArBlock() ,'C',60, 0 ,.F.,1,,,,,,,;
					{|| oBrowse1:aArray := CARREGA_ENTRADAS( oServer, "ORDER BY ENTRADA_C_XNOME" ), MEMVAR->cAlvo_Consulta:="ENTRADA_C_XNOME",obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: NOME FORNECEDOR") } ,,,,))

		oBrowse1:AddColumn( HColumn():New('Serie', hwg_ColumnArBlock() ,'C',5, 0 ,.F.,1,2,'999',,,,,,,,,))					
		oBrowse1:AddColumn( HColumn():New('DANFE', hwg_ColumnArBlock() ,'C',11, 0 ,.F.,1,2,,,,,,;
					{|| oBrowse1:aArray := CARREGA_ENTRADAS( oServer, "ORDER BY ENTRADA_b_nNF" ), MEMVAR->cAlvo_Consulta:="ENTRADA_b_nNF",obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: DANFE") } ,,,,))
		
		oBrowse1:AddColumn( HColumn():New('Emissão', hwg_ColumnArBlock() ,'D',11, 0 ,.F.,1,2,'99-99-9999',,,,,,,,,))
					
		oBrowse1:AddColumn( HColumn():New('MOVIMENTO', hwg_ColumnArBlock() ,'D',14, 0 ,.F.,1,2,'99-99-9999',,,,,;
					{|| oBrowse1:aArray := CARREGA_ENTRADAS( oServer, "ORDER BY ENTRADA_DATMOV" ), MEMVAR->cAlvo_Consulta:="ENTRADA_DATMOV",obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: MOVIMENTO") } ,,,,))
					
		oBrowse1:AddColumn( HColumn():New('Total da Nota', hwg_ColumnArBlock() ,'N',15, 2 ,.F.,1,2,'@E 99,999,999,999.99',,,,,,,,,))	
		oBrowse1:AddColumn( HColumn():New('ST', hwg_ColumnArBlock() ,'U',5, 0 ,.F.,0,,,,,,,,,,,))	
		oBrowse1:AddColumn( HColumn():New('Natureza Operação', hwg_ColumnArBlock(),'C',55, 0 ,.F.,0,,,,,,,,,,,))
		oBrowse1:AddColumn( HColumn():New('Chave Acesso', hwg_ColumnArBlock(),'C',55, 0 ,.F.,0,,,,,,,,,,,))
		oBrowse1:AddColumn( HColumn():New('OPERADOR/COMPUTADOR/DATA/HORA', hwg_ColumnArBlock(),'C',50, 0 ,.F.,0,,,,,,,,,,,))		
		oBrowse1:AddColumn( HColumn():New('ENTRADA', hwg_ColumnArBlock(),'C',12, 0 ,.F.,0,,,,,,,,,,,))