Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. file info. rss.
 From: Pete Sass
  Where is Pete Sass?
 Marathon, Ontario
 Canada
 Pete Sass
 To: Greg Green
  Where is Greg Green?
 
 Georgia - United States
 Greg Green
 Tags
Subject: RE: LOCATE FOR
Thread ID: 416437 Message ID: 416462 # Views: 34 # Ratings: 0
Version: Visual FoxPro 9 SP2 Category: Databases, Tables and SQL Server
Date: Monday, December 29, 2014 11:16:15 PM         
   


> >
> >
> > Hi Cecil,
> >
> > Inside the Scan ... EndScan loop you do not use Locate as this moves your record pointer
> > killing the record by record scanning.
> >
> > You should be using an If . . . Endif statement inside the Scan loop and if the record
> > conditions match then flip the flag to .T.
> > This will process the loop sequentially checking all the records.
> >
> > The other option maybe a better one is to set a filter on the table :
> >
SET FILTER TO MySQL_Emails.Recvd_Dt = lcMessageDate .AND. lcAttachment $ MySQL_Emails.Attachment
> > GOTO TOP
> > 
> > * --- You can now browse to see if you have the correct recordset and modify the
> > * --- filter accordingly until you are happy with the records filtered.
> > BROWSE 
> > 
> > * --- Now since all your got is your required records.
> > REPLACE MySQL_Emails.lFound WITH .T. WHILE .NOT. EOF()
> > SET FILTER TO
> > GOTO TOP
> > * --- Star out browse below after verifying all OK.
> > BROWSE
> > USE

> >
> > Pete "the IceMan", from the Great White North of Canada.
> > www.marathongriffincomputers.com
>
> Yes you can use a LOCATE inside a SCAN loop as long as they are two different tables which is the case with Cecil's code. I am not sure of the problem that he is having as I have used this same type of code before. You might try something along the lines of:
>
>
> SELECT KMartSearsFiles2012
> SCAN
> 	* Get the string. We will need to parse this string out.
> 	* The file names are separated with":" at the beginning,
> 	* and the end of each file.
> 	lcAttachment = ":" + ALLTRIM(KMartSearsFiles2012.FileName) + ":"
> 	SELECT MySQL_Emails
> 	LOCATE FOR ;
> 		MySQL_Emails.Recvd_Dt = KMartSearsFiles2012.Msg_Dt AND ;
> 		ATC(lcAttachment, MySQL_Emails.Attachment) > 0
> 	IF FOUND()
> 		REPLACE MySQL_Emails.lFound WITH .T. IN MySQL_Emails
> 	ENDIF
> 	SELECT KMartSearsFiles2012
> ENDSCAN
> 

>
> Possibly there is a case sensitivity issue here? Using ATC() function will make it case-insensitive. The second SELECT KMartSearsFiles2012 (inside the SCAN loop) is not necessary but I do it for readability.


Hi,

Greg ... thanks for correcting me I did not notice that inner select lol
:-$ :-$ :-$
Pete "the IceMan", from the Great White North of Canada.
www.marathongriffincomputers.com

ENTIRE THREAD

LOCATE FOR Posted by Cecil Champenois @ 12/29/2014 6:34:17 PM
RE: LOCATE FOR Posted by Pete Sass @ 12/29/2014 7:11:17 PM
RE: LOCATE FOR Posted by Cecil Champenois @ 12/29/2014 9:38:00 PM
RE: LOCATE FOR Posted by Greg Green @ 12/29/2014 9:57:36 PM
RE: LOCATE FOR Posted by Pete Sass @ 12/29/2014 11:16:15 PM
RE: LOCATE FOR Posted by Mike Yearwood @ 12/30/2014 3:49:07 PM
RE: LOCATE FOR Posted by Pete Sass @ 12/30/2014 6:18:31 PM
RE: LOCATE FOR Posted by Mike Yearwood @ 12/30/2014 6:55:18 PM
RE: LOCATE FOR Posted by Mike Yearwood @ 12/29/2014 8:30:51 PM
RE: LOCATE FOR Posted by Cecil Champenois @ 12/29/2014 9:35:06 PM
RE: LOCATE FOR Posted by Tony Vignone @ 12/29/2014 9:03:34 PM
RE: LOCATE FOR Posted by Greg Green @ 12/29/2014 10:03:17 PM
RE: LOCATE FOR Posted by Tony Vignone @ 12/30/2014 3:27:40 PM
RE: LOCATE FOR Posted by David Myrick @ 12/29/2014 10:21:05 PM
RE: LOCATE FOR Posted by Jun Tangunan @ 12/30/2014 2:23:08 AM