Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Append from - is it possible to add progress bar
Message
 
 
To
06/12/2000 23:28:35
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00450093
Message ID:
00450240
Views:
41
>>I don't know in advance how many records I have in a file.
>
>Guess, take the total K of the file and guess how long a record might be. Or take the total, divide it by something like 100 or 1000 and then extract rows until you have that long of a string.

>>I don't know in advance how many records I have in a file.
>
>Guess, take the total K of the file and guess how long a record might be. Or take the total, divide it by something like 100 or 1000 and then extract rows until you have that long of a string.

Hi Mike,

I've thought about it a little bit more, and I think, I found a simple and a quite elegant solution.

Bellow is a pseudo untested code (write it from the top of the head):
local lnSize, loTerm, lcTempFile, lcLongStr, lcStr, lnSizeRead
lnSize=fsize(lcTextFile) && or use adir
loTerm=newobject('thermometer', 'wg.vcx','','Appending',lnSize)
lcTempFile=gcTempPath+sys(15) && ? sys(2001) 
fh=fopen(lcTextFile)
lnSizeRead=0
select WorkTable && Table in which we want append
do while !feof(fh)
   lcLongStr=''
   for i=1 to 500 && Quite low number, so Append should be almost instantanious
      if feof(fh)
         exit
     endif 
     lcStr=fgets(fh,2000)
     lnSizeRead=lnSizeRead+len(lcStr)
     loTerm.update(lnSizeRead)
     lcLongStr=lcStr+chr(10)+chr(13)
   next
    =strtofile(rtrim(lcLongStr),lcTempFile)
    append from (lcTempFile) && should be quick
enddo
release loTerm
This is the idea. The similar idea could be used for append from table. Divide number of records, say, by 1000 and do append for betwen(recno(),lnStart, lnFinsish) in a loop (You got the idea).

Ok, what do you think?
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform