Conversão Base de Dados Sistema Legado

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Conversão Base de Dados Sistema Legado

Mensagem por asimoes »

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 do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Conversão Base de Dados Sistema Legado

Mensagem por susviela@bol.com.br »

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 do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Conversão Base de Dados Sistema Legado

Mensagem por Nascimento »

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

Conversão Base de Dados Sistema Legado

Mensagem por Fernando queiroz »

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

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

Conversão Base de Dados Sistema Legado

Mensagem por asimoes »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conversão Base de Dados Sistema Legado

Mensagem por JoséQuintas »

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

Conversão Base de Dados Sistema Legado

Mensagem por Fernando queiroz »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conversão Base de Dados Sistema Legado

Mensagem por JoséQuintas »

Código: Selecionar todos

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 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/
AutomoSistema
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 27 Nov 2015 22:09
Localização: Jardim-MS

Conversão Base de Dados Sistema Legado

Mensagem por AutomoSistema »

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

Conversão Base de Dados Sistema Legado

Mensagem por Fernando queiroz »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conversão Base de Dados Sistema Legado

Mensagem por JoséQuintas »

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

Conversão Base de Dados Sistema Legado

Mensagem por JoséQuintas »

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

Conversão Base de Dados Sistema Legado

Mensagem por asimoes »

Array para o BROWSE ARRAY da HwGui é assim:

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

Então usando FOR .. EACH

Código: Selecionar todos

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

Conversão Base de Dados Sistema Legado

Mensagem por asimoes »

Somente como exemplo como eu faço:

Código: Selecionar todos

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

Conversão Base de Dados Sistema Legado

Mensagem por asimoes »

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