Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Repeating code in IF ELSE ENDIF
Message
De
13/01/2009 19:14:04
Jay Johengen
Altamahaw-Ossipee, Caroline du Nord, États-Unis
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
01373379
Message ID:
01373406
Vues:
30
>In those cases I tend to use a logical variable
>
>
>IF !EMPTY(ALIAS())
>	LOCAL ;
>		lcTable, ;
>		lcFields, ;
>		lcOrderField, ;
>		llEarlyExit && or whatever, starts with .f.
>
>	lcFields = ''
>	lcTable = ALLTRIM(UPPER(JUSTSTEM(ALIAS())))
>	lnColumnCount = FCOUNT(lcTable)
>	IF lnColumnCount = 2
>		FOR ix = 1 TO lnColumnCount
>			lcFields = m.lcFields + IIF(m.ix > 1, ', ','') + FIELD(ix) + ' AS Fld'+TRANSFORM(ix)
>			IF m.ix = 1
>				lcOrderField = FIELD(ix)
>			ENDIF
>		ENDFOR
>		RunSQL = 'SELECT ' + lcFields + ' FROM ' + lcTable + ' ORDER BY ' + lcOrderField + ' INTO CURSOR ReportCursor HAVING !EMPTY(Fld1)'
>		&RunSQL
>		lnTotalCodes = _TALLY
>	ELSE
>		llEarlyExit = .t.
>	ENDIF
>ELSE
>	llEarlyExit = .t.
>ENDIF
>
>IF llEarlyExit
>	RELEASE lnTotalCodes
>	SELECT (THIS.CurrentAlias)
>	GOTO THIS.CurrentRecNo
>ENDIF
>RETURN NOT llEarlyExit
>
>
>Now, that said, in this case the code you are repeating is mostly unnecessary or required anyways, you do not need RELEASE lnTotalCodes (it should be a local variable) and you do not need to restore the record number, as the SQL will open the table again with different alias, and you need to restore the current alias and return the flag value anyways

This is in the DE of a report. Different than the normal scenario. It needs to be public.

>[Update] I just noticed that the local declaration was inside the first if, for the llEarlyExit variable it should be outside, sorry
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform