Clipper On Line • Ver Tópico - Conversão Base de Dados Sistema Legado

Conversão Base de Dados Sistema Legado

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Conversão Base de Dados Sistema Legado

Mensagempor asimoes » 09 Fev 2020 08:45

Faço manutenção em sistema de mais de 30 anos!, fiz a conversão em 2010 de clipper para harbour e em 2017 comecei a outra conversão para 100% GUI,
mas a base de dados continua sendo a mesmo até agora, agora estou preparando a base para migrar para um SGBD já escolhi o MariaDb pela questão custo.
Essa base de dados ainda tem o "ranso" de nomes não amigáveis, não tem manual, por exemplo a base de sócios é APC01, a base de cobrança é APA01, APA41 e por ai vai. a base APC01 já modifiquei para CADASTROSOCIOS.DBF, APA01 para COBRANCAASAPREV.DBF, APA41 para COBRANCAUTI, tá dando um trabalho, em 2 dias modifiquei todas as chamadas no sistema para os nomes antigos, depois vou me agradecer. Eu entendo que esses nomes eram assim por conta da limitação do S.O da época o Ms-Dos que limitava a 8.3, mas se eu estou pensando em melhorar a segurança e integridade, então é hora de deixar os nomes das tabelas o mais claro possível, nome de campo ficará para depois, isso é mais complicado. Fica a dica.
â–º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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Conversão Base de Dados Sistema Legado

Mensagempor susviela@bol.com.br » 09 Fev 2020 15:45

Excelente escolha o MariaDB.

Pois é, essa parte de converter sistemas legados, dá uma "cosquinha" de fazer tudo que a nosso ver, poderia ser melhorado, mas precisamos mesmo fazer uma seleção de prioridades para evitar sobrecarga de trabalho.

E vamos tocar a vida em frente.
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar de usuário

susviela@bol.com.br
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 236
Data de registro: 30 Jun 2017 11:17
Cidade/Estado: São José / SC
Curtiu: 153 vezes
Mens.Curtidas: 24 vezes

Conversão Base de Dados Sistema Legado

Mensagempor Nascimento » 09 Fev 2020 20:25

imagino que cada um a seu tempo vai ter que fazer isso, por hora optei pelo letodbf , mais sei que em um futuro proximo posso optar para algum sgdb
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Conversão Base de Dados Sistema Legado

Mensagempor Fernando queiroz » 15 Mar 2020 15:43

Hoje uso o LETODBF mas já iniciei as conversões de dados para o MARIADB e agora chegou a parte complicada, estou querendo fazer um BROWSE pegando os dados do MARIADB mas to mais perdido que tudo , alguém que já tenha uma experiência no assunto pode me dar uma mão

Segue abaixo o código para entendimento

Não sei como pegar os dados do retorno do MARIADB , já tentei como DATABASE e ARRAY mas não deu certo
preciso adicionar alguma .DLL

/*
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 := "";
   , cQuery
   
PRIVATE   cProgressKey:="" ,dDatepicker1:=(m->dat_hoje - 30), dDatepicker2:=m->dat_hoje, lFiltro:=.T., nCODPRO:=0;
      , oLabel5 :="",  oLabel7 :="", oLabel10 :="", oLabel11 :="", oLabel6 :="", oLabel9 :="", oLabel12 :="", oLabel18 :=""

   BEGIN SEQUENCE
        oCn := MySqlConnection( "192.168.15.200", "", "sgcroot", "20r13uqse" )
      oCn:Open()
      cQuery:="USE AMADEU"
      oCn:EXECUTE(cQuery)
   RECOVER
      hwg_MsgInfo('Erro na Conecção do Banco de Dados')
      Return nil
   End      
   
   BEGIN SEQUENCE   
      cQuery:= "SELECT LOGGERAL_NUMNOT, LOGGERAL_CODPRO, LOGGERAL_DATMOV, LOGGERAL_TIPMOV, LOGGERAL_CODVEN, LOGGERAL_CLIFOR, LOGGERAL_QUANT, LOGGERAL_VALUNI, LOGGERAL_OPERADOR from loggeral"
      Retorno := oCn:EXECUTE(cQuery)   
   RECOVER
      hwg_MsgInfo('Erro no SELECT do Banco de Dados')
      oCn:Close()
      Return nil
   End         
      
      
      INIT DIALOG oDlg TITLE "Log Geral - Consulta"  ;
         ICON MEMVAR->SGC_ICON  ;
         AT 0, 0 SIZE 1167,600 CLIPPER  NOEXIT 

      ThisBRW := oDlg   
      
//      hwg_CREATEARLIST( oBrowse1, Retorno )
      
      @ 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:AddColumn( HColumn():New( "Nr.Nota",Retorno:fields["LOGGERAL_NUMNOT"]:VALUE,"C",10,00) )
         oBrowse1:AddColumn( HColumn():New( "Codigo",Retorno:fields["LOGGERAL_CODPRO"]:VALUE,"C",10,00,) )

//         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("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()

      
      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 '@R 999999-9' MAXLENGTH 9        
//         
//      @ 245,43 OWNERBUTTON oOwnerbutton1  SIZE 24,24   ;
//         TEXT ''  ;
//         COORDINATES 0, 0, 0, 0  ;
//         BITMAP 'FINDBMP' FROM RESOURCE ;
//         COORDINATES 2, 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   

      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.

HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Conversão Base de Dados Sistema Legado

Mensagempor asimoes » 15 Mar 2020 19:20

Olá,
Você vai ter que usar vetor, como eu faço.
â–º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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Conversão Base de Dados Sistema Legado

Mensagempor JoséQuintas » 16 Mar 2020 13:09

asimoes escreveu:Você vai ter que usar vetor, como eu faço.


Mas a HWGUI não tinha um browse igual o TBrowse?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Conversão Base de Dados Sistema Legado

Mensagempor Fernando queiroz » 16 Mar 2020 14:55

JoséQuintas escreveu:
asimoes escreveu:Você vai ter que usar vetor, como eu faço.


Mas a HWGUI não tinha um browse igual o TBrowse?


asimoes eu to tentando mas nao saiu nada ate agora

tentei assim

DO WHILE ! oQuery:Eof()
oRow := oQuery:GetRow()
aArray := { oRow:FieldGet( oRow:FieldPos( "LOGGERAL_NUMNOT" )), oRow:FieldGet( oRow:FieldPos( "LOGGERAL_CODPRO" )) }
oQuery:SKIP( )
ENDD

e depois

hwg_CREATEARLIST( oBrowse1, aArray )

@ 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

mas nao rolou , to perdido
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Conversão Base de Dados Sistema Legado

Mensagempor JoséQuintas » 16 Mar 2020 15:18

rs := conexão:Execute( "SELECT ...." )
aArray := rs:GetRows()


a partir daí, o aArray é um array comum.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Conversão Base de Dados Sistema Legado

Mensagempor AutomoSistema » 16 Mar 2020 15:59

Boa tarde, depois de um select eu faço assim

::MemoryTableVenda:Zap()
xRegistro := Len( ::xPegaDados )
For xConta = 1 to xRegistro
::MemoryTableVenda:Append()
With Object ::MemoryTableVenda:Fields
:Codigo := ::xPegaDados[xConta,1]
:Nome := ::xPegaDados[xConta,2]
:Custo := ::xPegaDados[xConta,3]
:Venda := ::xPegaDados[xConta,4]
:Total := ::xPegaDados[xConta,4] * :Quantidade
End
Next

adicionando dados de uma array em uma tabela temporária fica muito rápido depois de um simples select
AutomoSistema
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 27 Nov 2015 21:09
Cidade/Estado: Jardim-MS
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

Conversão Base de Dados Sistema Legado

Mensagempor Fernando queiroz » 16 Mar 2020 16:48

Ainda esta meio estranho mas já deu uma luz

fiz assim

oServer := MySqlConnection( "192.168.15.200", "", "sgcroot", "20r13uqse" )
oServer:Open()
oServer:Execute( "USE AMADEU")
oQuery := oServer:Execute( "SELECT LOGGERAL_NUMNOT, LOGGERAL_CODPRO from loggeral LIMIT 50" )
aArray := oQuery:GetRows()


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,,,)

hwg_CREATEARLIST( oBrowse1, aArray )
oBrowse1:aColumns[1]:heading := "Nr.Nota"
oBrowse1:aColumns[2]:heading := "Codigo"

tela.jpg


so que pelo visto ele ta pegando o array como uma coluna somente
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Conversão Base de Dados Sistema Legado

Mensagempor JoséQuintas » 16 Mar 2020 18:53

A impressão que tenho é que está ao contrário: linhas são colunas, e colunas são linhas.
A primeira linha são as notas, e a segunda linha são os códigos
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Conversão Base de Dados Sistema Legado

Mensagempor JoséQuintas » 16 Mar 2020 19:28

Olhando os fontes:

HBROWSE tem as propriedades bSkip, bGoto, bGoTop, bGoBot, bEof, bBof - acredito que sejam os codeblocks de movimentação
HCOLUMN tem a propriedade block, heading - acredito que seja o equivalente das colunas do tbrowse

Como se usa isso não sei, mas seria o equivalente do tbrowse, e seria adaptar aquele tbrowse console pra esse controle.
Talvez olhar os arquivos CH, pra ver como usar isso via comando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Conversão Base de Dados Sistema Legado

Mensagempor asimoes » 16 Mar 2020 20:35

Array para o BROWSE ARRAY da HwGui é assim:

aResult := { { COL1, COL2, COL3 } }

Então usando FOR .. EACH
For Each oElemento IN aResult
   aAdd( aResult, { oElemento[1], oElemento[2], oElemento[3] } ) //até o limite de elementos do resultset
Next

ThisForm:GridTeste:aArray := aResult
ThisForm:GridTeste:Refresh()

â–º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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Conversão Base de Dados Sistema Legado

Mensagempor asimoes » 16 Mar 2020 20:38

Somente como exemplo como eu faço:
  @ 0005,0144 BROWSE   GridProcessos ;
               ARRAY ;
               SIZE     1296,455 ;
               STYLE    WS_TABSTOP + ES_AUTOHSCROLL + WS_HSCROLL ;
               FONT     HFont():Add( 'Tahoma', 0, -13, 550 ) ;
               ON CLICK {|| ::MPegaNumeroProcesso("C") }   

    With Object GridProcessos             
       :aArray         := {}
       :HighlightStyle := 1                       
       :sepColor       := 16711680               
       :tcolorSel      := Hwg_Rgb(0, 0, 0)
       :bcolorSel      := N_CLEANBLUE               
       :headColor      := Hwg_Rgb(0, 0, 0)               
       :freeze         := 1                       
       :lAdjRight      := .T.                     
       :nColumns       := 7
       :AutoFit()
       :oHeadFont      := HFont():Add( 'Tahoma', 0, -13, 700 )   
       :nHeadHeight    := 24
       :SetRowHeight( :nHeadHeight )
       :ShowMark(.T.) // Seta da grid
       :AddColumn( HColumn():New('Data;Preferência', hwg_ColumnArBlock(), 'D', 10, 00, lEditable, DT_CENTER, DT_CENTER,,,,,,{|| ::Ordena(1)},,,,))
       :AddColumn( HColumn():New('Data;Entrada',     hwg_ColumnArBlock(), 'D', 10, 00, lEditable, DT_CENTER, DT_CENTER,,,,,,,,,,))
       :AddColumn( HColumn():New(';Processo',        hwg_ColumnArBlock(), 'C', 25, 00, lEditable, DT_CENTER, DT_CENTER, '@R 9999999-99.9999.9.99.9999',,,,,,,,,))
       :AddColumn( HColumn():New(';Reclamante',      hwg_ColumnArBlock(), 'C', 60, 00, lEditable, DT_CENTER, DT_LEFT,,,,,,,,,,))
       :AddColumn( HColumn():New(';Valor',           hwg_ColumnArBlock(), 'N', 14, 02, lEditable, DT_CENTER, DT_RIGHT, '@E 99,999,999.99',,,,,,,,,))
       :AddColumn( HColumn():New(';Status',          hwg_ColumnArBlock(), 'C', 10, 00, lEditable, DT_CENTER, DT_CENTER,,,,,,,,,,))
       :AddColumn( HColumn():New('Banco;Judicial',   hwg_ColumnArBlock(), 'C', 10, 00, lEditable, DT_CENTER, DT_CENTER, '@R 999-9',,,,,,,,,))
       :bOther := {|this,m,wp,lp| ::MGridProcessosChange( this, m, wp, lp ) }
       For iColuna:=1 to 7
          :aColumns[iColuna]:bColorBlock := {|| ::MColorBlock() }
          DoEvents()
       Next
    End

METHOD MColorBlock()
LOCAL bColor, cStatusProcesso

   cTipoBloqueio   := Thisform:GridProcessos:aArray[ Thisform:GridProcessos:nCurrent, 8]
   cEnviadoFinCon  := Thisform:GridProcessos:aArray[ Thisform:GridProcessos:nCurrent, 9]
   cStatusProcesso := Thisform:GridProcessos:aArray[ Thisform:GridProcessos:nCurrent, 10]
     
   If cStatusProcesso $ "CQS"
      bColor := {8334079, N_WHITE,  8334079, N_CLEANBLUE} 
   Else
      If cEnviadoFinCon = "1"
         bColor := {33023, N_WHITE,   33023, N_CLEANBLUE}   
      Else
         bColor := {N_BLACK, N_WHITE , N_BLACK, N_CLEANBLUE}   
         If ! Empty( cTipoBloqueio )   
            bColor := {N_RED, N_WHITE,   N_RED, N_CLEANBLUE}
         Else
            bColor := {N_BLACK, N_WHITE , N_BLACK, N_CLEANBLUE}      
         Endif
      Endif   
   Endif
   
RETURN bColor
â–º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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Conversão Base de Dados Sistema Legado

Mensagempor asimoes » 16 Mar 2020 20:41

A grid é populada com algum resultset, depois que faz uma depois é somente copy/cola e alguns ajustes
â–º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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro