Browse ADO/Array

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

Hoje no harbour-users me responderam sobre isso.
É sobre o problema de pegar o ADO ao contrário: linhas/registros ao invés de registros/linhas

No changelog
2017-07-03 18:36 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbwin/olecore.c
! reverted order of indexes and dimensions in conversions of
multidimensional arrays.
This modification affects both conversions (1) from Harbour array
to OLE variant SafeArray and (2) from OLE variant SafeArray to Harbour
array. The first one is new Harbour extension of __oleVariantNew() so
here above modification should not create any backward compatibility
problems but the second interacts with code which existed in Harbour
from early OLE implementation so if someone already encoded hacks
to revert array indexes and dimensions at .prg level then now he has
to remove it.
Please not that above modification affects only for multidimensional
OLE typed arrays. It does not change anything for single dimension
arrays or single dimension arrays of variants which contains other
similar arrays in their items.
email sobre a questão

https://groups.google.com/forum/#!topic ... VESjqd00uo

A diferença é pegar direto do ADO, sem precisar ficar fazendo processamento pra corrigir o array.

E também... se atualizar o Harbour, a ordem já é certa, então a rotina existente pode estragar a ordem ao invés de corrigir.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

JoséQuintas escreveu:E também... se atualizar o Harbour, a ordem já é certa, então a rotina existente pode estragar a ordem ao invés de corrigir.
Não sei se expliquei direito:
O retorno do Harbour era errado, antes dessa data, então, alguns fizeram rotina pra fazer a inversão.
Depois desta data o Harbour passou a fazer certo, e a rotina de inversão obrigatoriamente vai precisar ser removida.

Isso afeta tudo de OLE: ADO, Excel, etc. ao trabalhar com arrays multidimensionais.

Com certeza, transferir milhares de valores por um único array é muito mais rápido do que transferir um valor de cada vez.

Confirmei isso no Harbour 3.2 e Harbour 3.4, os dois foram corrigidos, porque a alteração foi antes do 3.4 ser congelado.
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Browse ADO/Array

Mensagem por asimoes »

Confesso que voei nessa, tem algum exemplo pra explicar
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

Acabei indicando o browse, porque é onde convertem pra usar o browse da hwgui pra array.

Código: Selecionar todos

oRs := conexao:Execute( "...." )
oArray := oRs;GetRows()
ou no Excel, pra ler/gravar um bloco.

Ao invés de considerar:

{ 1, "jose" }
{ 2, "maria" }
{ 3, "cunha" }

retornava

{ 1, 2, 3 }
{ "jose", "maria", "cunha" }

Uma inversão de linhas/colunas.
Deveria retornar um registro por linha, mas retornava um campo por linha.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Browse ADO/Array

Mensagem por Itamar M. Lins Jr. »

Ola!
Hummm, "miôrô" o entendimento pra nois!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

E vale pra Excel.

Por exemplo, transferir o array do hbmysql para o Excel de uma vez só... antes dava problema.
Ou importar dados do Excel, ou qualquer coisa em OLE.

O detalhe importante também é que vai ser em ordem diferente, se a versão do Harbour for anterior ou posterior à modificação/correção.
Pode acabar parecendo que surgiu um bug ao atualizar o Harbour, quando na verdade antes é que estava com bug.....

Pode ser bom pra conferir se o Harbour continua com o problema ou não, ou no XHarbour... sei lá o que acontece nele.
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Browse ADO/Array

Mensagem por asimoes »

Não conhecia esse método GetRows.

Fiz um teste aqui no meu sistema, harbour 3.4

Fiz um ValToPrg para um arquivo o resultado foi esse:

No meu select:

cQuery := "SELECT "
cQuery += " APC.N_CLASSE CLASSE, RES.TOTAL, APC.CLASSE CLASSEPG "

Código: Selecionar todos

M->__ValToPrg_Array := Array(3)
   M->__ValToPrg_Array[1] := Array(5)
      M->__ValToPrg_Array[1][1] := "1 A 3 SALÁRIOS MINIMOS"
      M->__ValToPrg_Array[1][2] := "1 SALÁRIO MINIMO"
      M->__ValToPrg_Array[1][3] := "ACIMA DE 3 SALÁRIOS"
      M->__ValToPrg_Array[1][4] := "ASSOCIADOS 01-A"
      M->__ValToPrg_Array[1][5] := "ASSOCIADOS 05"

   M->__ValToPrg_Array[2] := Array(5)
      M->__ValToPrg_Array[2][1] := 8.00
      M->__ValToPrg_Array[2][2] := 22.00
      M->__ValToPrg_Array[2][3] := 21.00
      M->__ValToPrg_Array[2][4] := 1.00
      M->__ValToPrg_Array[2][5] := 17.00

   M->__ValToPrg_Array[3] := Array(5)
      M->__ValToPrg_Array[3][1] := "02C"
      M->__ValToPrg_Array[3][2] := "03C"
      M->__ValToPrg_Array[3][3] := "01C"
      M->__ValToPrg_Array[3][4] := "01A"
      M->__ValToPrg_Array[3][5] := "05B"
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

O Harbour 3.4, apesar de ter o commit, tá fazendo errado.
test.png

Código: Selecionar todos

PROCEDURE Main

   LOCAL oExcel, oRs, aRowList, aColList, xCol

   SetMode(25,80)
   CLS
   oExcel := ExcelConnection( "d:\temp\test.xls" )
   oExcel:Open()
   oRs := oExcel:Execute( "SELECT * FROM [planilha1$]" )
   aRowList := oRs:GetRows()
   oRs:Close()
   oExcel:Close()
   FOR EACH aColList IN aRowList
      ?
      FOR EACH xCol IN aColList
         ?? xCol
         ?? Space(3)
      NEXT
   NEXT

   Inkey(0)

   RETURN
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Browse ADO/Array

Mensagem por asimoes »

Quintas, na 3.2 tá funcionando isso?
Como a 3.4 tá congelada, não vai dar pra usar o método.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

asimoes escreveu:Quintas, na 3.2 tá funcionando isso?
Como a 3.4 tá congelada, não vai dar pra usar o método.
Fui tentar atualizar isso no 3.4, começando por copiar olecore.c....

Agora fud.eu tudo.
Fui resetar a pasta do Harbour 3.4 resetei meus fontes pra dia 08.

Só pra dar uma idéia....
Se liberar versão agora, todo mundo que tenha atualizado antes, vai perder tudo de contabilidade.

Se for só isso, ainda tá bom, porque o backup recupera, o problema é... e o que mais perdi?

Não adianta nada ter os fontes do Harbour.
Se uma simples cópia do 3.2 para o 3.4 com alterações prontas, já é difícil, quanto mais alterar o que não tem.

Não dá certo copiar porque:
Tem declaração nova nesse fonte, que vém de arquivo include .h.
Essa mesma declaração passou a ser usada em outros fontes do núcleo/core.
Trocar todos esses fontes... não ajudou em nada.
Então resetei de volta ao que estava antes.

Mas .... fiz na pasta dos meus fontes, que não estava salvando, e fud.eu tudo.

Ainda contando até 10, antes de fazer sei lá o que....
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Browse ADO/Array

Mensagem por asimoes »

Quintas que M!
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Browse ADO/Array

Mensagem por Fernando queiroz »

baixei a ultima atualizacao da 3.2 , mas esta dando erro no LIBPNG.a nao deu para tastar
alguem teria uma libpng.a sem problemas para W10
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

Só pra corrigir minha informação:

O 3.4 NÃO tem essa atualização, ele parou antes.
É que confundi as datas, porque o meu tem pequenas modificações com data posterior.

Acho que só um master pra atualizar o 3.4.

Tem essa alteração do array, e aqueles limites mostruosos de variáveis, que seriam interessantes pra acrescentar.

Entre perder o que foi melhorado, e perder isso, por enquanto dá pra mim ficar sem isso, e prefiro assim.

Quanto à LIB PNG.... será que essa não seria compatível com a 3.4 e seria só copiar?
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse ADO/Array

Mensagem por JoséQuintas »

JoséQuintas escreveu:Só pra corrigir minha informação:
O 3.4 NÃO tem essa atualização, ele parou antes.
É que confundi as datas, porque o meu tem pequenas modificações com data posterior.
Corrigindo a correção kkkkk

O Viktor parou de atualizar o 3.4 em dezembro/2017 e essa mudança foi em julho/2017.
Ela consta como fazendo parte do 3.4, inclusive está no changelog do 3.4 e nos commits.

Aí complicou mais ainda.
Se até o Viktor aparentemente falhou na atualização do 3.4....
Sem chance pra nós...

Ainda resta uma última tentativa: retornar o mingw para a última versão "testada" pelo Harbour, a 7.1
Pode ser uma possibilidade, afinal, não chegou a ser testado com mingw 8.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/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Browse ADO/Array

Mensagem por Fernando queiroz »

fiz o teste pegando a LIBPNG.a da versao 3.4 e da versao 3.2 64 e da antiga 3.2 e nenhuma funcionou com a versao nova da 3.2
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder