Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to improve this code
Message
 
To
06/12/2006 21:40:40
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivia
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 6
Miscellaneous
Thread ID:
01175464
Message ID:
01175558
Views:
8
Hello Hilmar,

I believe you mean to use ENDIF and ENDSCAN not ENDDO in your example :)


>>
>>sele csrtable
>>go top
>>do while .not. eof()
>>	rch = csrkey
>>	sele employee
>>	go top
>>	locate for rch=ckey
>>	if found()
>>		lc = locfle
>>		sele csrtable
>>		replace locfle with lc
>>	enddo
>>	skip
>>enddo
>>
>
>For a start, you could use a SCAN, which saves several commands:
>
>
>sele csrtable
>scan
>	rch = csrkey
>	sele employee
>	go top
>	locate for rch=ckey
>	if found()
>		lc = locfle
>		sele csrtable
>		replace locfle with lc
>	enddo
>enddo
>
>
>Next, you should use full commands (select instead of sele), and give your variables meaningful commands. Also, use variable naming conventions, and make sure your variables are declared. I'll omit renaming the variables for now.
>
>You can omit "go top", since "locate" will start at the top.
>
>In the locate command, I think, it is better to invert (if I understand correctly, ckey is the field, rch the variable), so that Rushmore Optimization works better.
>
>
>select csrtable
>scan
>	rch = csrkey
>	select employee
>	locate for ckey = rch
>	if found()
>		lc = locfle
>		select csrtable
>		replace locfle with lc
>	enddo
>enddo
>
>
>In your original code, you forgot to unconditionally go back to alias csrtable. (With SCAN, this is implicit.)
'If the people lead, the leaders will follow'
'War does not determine who is RIGHT, just who is LEFT'
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform