FOR EACH pra GET
Enviado: 20 Ago 2020 17:17
Tava mexendo num fonte aqui, e achei interessante postar.
Mostra o que pode ser feito com FOR/EACH, sem precisar de macro, e facilita muito.
Eu tinha feito assim:
agora mudei pra isto:
Antes era um texto, e a data pra ser digitada, pra cada um dos ítens da lista.
Agora tem texto, data, meses, data vencto, dias pra aviso, pra cada um dos ítens da lista
Pois é.... dobrou a quantidade de informação, e ficou mais simples que antes, graças ao uso do FOR/EACH
Mostra o que pode ser feito com FOR/EACH, sem precisar de macro, e facilita muito.
Eu tinha feito assim:
Código: Selecionar todos
IF Len( mlcLicList ) > 0
@ Row() + 1, 1 SAY Pad( "Lic.01", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 1, LIC_DATA ]
IF AddMonth( mlcLicList[ 1, LIC_DATA ], mlcLicList[ 1, LIC_VALIDADE ] ) - mlcLicList[ 1, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 1, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 1
@ Row() + 1, 1 SAY Pad( "Lic.02", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 2, LIC_DATA ]
IF AddMonth( mlcLicList[ 2, LIC_DATA ], mlcLicList[ 2, LIC_VALIDADE ] ) - mlcLicList[ 2, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 2, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 2
@ Row() + 1, 1 SAY Pad( "Lic.03", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 3, LIC_DATA ]
IF AddMonth( mlcLicList[ 3, LIC_DATA ], mlcLicList[ 3, LIC_VALIDADE ]) - mlcLicList[ 3, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 3, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 3
@ Row() + 1, 1 SAY Pad( "Lic.04", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 4, LIC_DATA ]
IF AddMonth( mlcLicList[ 4, LIC_DATA ], mlcLicList[ 4, LIC_VALIDADE ] ) - mlcLicList[ 4, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 4, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 4
@ Row() + 1, 1 SAY Pad( "Lic.05", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 5, LIC_DATA ]
IF AddMonth( mlcLicList[ 5, LIC_DATA ], mlcLicList[ 5, LIC_VALIDADE ] ) - mlcLicList[ 5, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 5, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 5
@ Row() + 1, 1 SAY Pad( "Lic.06", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 6, LIC_DATA ]
IF AddMonth( mlcLicList[ 6, LIC_DATA ], mlcLicList[ 6, LIC_VALIDADE ] ) - mlcLicList[ 6, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 6, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 6
@ Row() + 1, 1 SAY Pad( "Lic.07", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 7, LIC_DATA ]
IF AddMonth( mlcLicList[ 7, LIC_DATA ], mlcLicList[ 7, LIC_VALIDADE ] ) - mlcLicList[ 7, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 7, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 7
@ Row() + 1, 1 SAY Pad( "Lic.08", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 8, LIC_DATA ]
IF AddMonth( mlcLicList[ 8, LIC_DATA ], mlcLicList[ 8, LIC_VALIDADE ] ) - mlcLicList[ 8, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 8, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 8
@ Row() + 1, 1 SAY Pad( "Lic.09", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 9, LIC_DATA ]
IF AddMonth( mlcLicList[ 9, LIC_DATA ], mlcLicList[ 9, LIC_VALIDADE ] ) - mlcLicList[ 9, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 9, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 9
@ Row() + 1, 1 SAY Pad( "Lic.10", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 10, LIC_DATA ]
IF AddMonth( mlcLicList[ 10, LIC_DATA ], mlcLicList[ 10, LIC_VALIDADE ] ) - mlcLicList[ 10, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 10, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 10
@ Row() + 1, 1 SAY Pad( "Lic.11", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 11, LIC_DATA ]
IF AddMonth( mlcLicList[ 11, LIC_DATA ], mlcLicList[ 11, LIC_VALIDADE ] ) - mlcLicList[ 11, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 11, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
IF Len( mlcLicList ) > 11
@ Row() + 1, 1 SAY Pad( "Lic.12", LIC_TAMANHODESC, "." ) + ".:" GET mlcLicList[ 12, LIC_DATA ]
IF AddMonth( mlcLicList[ 12, LIC_DATA ], mlcLicList[ 12, LIC_VALIDADE ] ) - mlcLicList[ 12, LIC_PRAZO ] < Date()
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 40 ) COLOR SetColorAlerta()
ENDIF
Encontra( AUX_LICTIP + mlcLicList[ 12, LIC_CODIGO ], "jptabel", "numlan" )
@ Row(), 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
ENDIF
Código: Selecionar todos
FOR EACH oLicenca IN mlcLicList
IF Val( oLicenca[ LIC_CODIGO ] ) != 0
Encontra( AUX_LICTIP + oLicenca[ LIC_CODIGO ], "jptabel", "numlan" )
@ Row() + 1, 1 SAY Pad( Trim( jptabel->axDescri ), LIC_TAMANHODESC, "." )
@ Row(), Col() SAY ":" GET oLicenca[ LIC_DATA ] VALID oLicenca[ LIC_DATA ] <= Date()
@ Row(), Col() + 2 SAY Str( oLicenca[ LIC_VALIDADE ], 3 ) + "m"
@ Row(), Col() + 2 SAY Dtoc( AddMonth( oLicenca[ LIC_DATA ], oLicenca[ LIC_VALIDADE ] ) )
@ Row(), Col() + 2 SAY Str( oLicenca[ LIC_PRAZO ], 3 ) + "d"
IF AddMonth( oLicenca[ LIC_DATA ], oLicenca[ LIC_VALIDADE ] ) - oLicenca[ LIC_PRAZO ] < Date() ;
.OR. ( oLicenca[ LIC_DATA ] > Date() .AND. oLicenca[ LIC_DATA ] - oLicenca[ LIC_PRAZO ] < Date() )
@ Row(), Col() + 2 SAY Padc( "VENCIDA", 20 ) COLOR SetColorAlerta()
ELSEIF oLicenca[ LIC_DATA ] > Date()
@ Row(), Col() + 2 SAY Padc( "DATA ERRADA", 20 ) COLOR SetColorAlerta()
ENDIF
ENDIF
NEXT
Agora tem texto, data, meses, data vencto, dias pra aviso, pra cada um dos ítens da lista
Pois é.... dobrou a quantidade de informação, e ficou mais simples que antes, graças ao uso do FOR/EACH