Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Repeating code in IF ELSE ENDIF
Message
From
13/01/2009 19:14:04
Jay Johengen
Altamahaw-Ossipee, North Carolina, United States
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01373379
Message ID:
01373406
Views:
24
>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
Previous
Reply
Map
View

Click here to load this message in the networking platform