Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Append from - is it possible to add progress bar
Message
 
 
À
06/12/2000 23:28:35
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00450093
Message ID:
00450240
Vues:
42
>>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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform