Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Is there a faster way????
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Is there a faster way????
Divers
Thread ID:
00481135
Message ID:
00481135
Vues:
45
Hello everybody!!!!

I posted yesterday that I was trying to read this file into a table.
Well I used Nadya's Advice and it work perfectly. I got everything into a strickly character table. However I could not stop there because my numbers needed to be in the form of currency. I had some numbers in the table that looked like 16348.00- in the field.
So I made a replica of that table but fixed the table with the right format.

I wrote a program that will pop each line of the character table into the real table when it gets to the character numbers, it will check to see if it is a positive or negative number, format it appropriatly, and pop it into the real table.

This worked fine while the file I was using was about 20,000 records. I mean it ran in less than 4 minutes.

Now the file size has changed to over 120,000 records. Now it takes 25-30 minutes for it to run. I get the desired result but is there a faster way of getting this to run?
Here is the sample of the loop and replace statements that I am doing:

SCAN
SELECT STK_REC_REAL && this is the real table that we will work with
APPEND BLANK
FOR START = 1 TO NUMFIELDS && loop through the record
SELECT STK_REC_NUM2 && look at the character table
IF START != NUMFIELDS && am I at the last field
THISFIELD = FIELD(START)
lcField = &THISFIELD
lcField = ALLTRIM(lcField)
ENDIF
IF START = 5 && this is a string date like yymmdd ei '010228'
ldfield = STRINGYMDTODATE(lcField) && converts to a real date ei {02/28/01}
ENDIF
IF START >= 11 AND START < NUMFIELDS && fields with digits in them
IF RIGHT(lcField,1) = '-' && if negative
lcField = STRTRAN(lcField,RIGHT(lcField,1))
lcField2 = '-'+lcField
lnField = VAL(lcField2)
ELSE && if positive
lnField = VAL(lcField)
ENDIF
ENDIF
SELECT STK_REC_REAL && look at the real table
DO CASE
CASE START < 11 && not a field with currency in it
REPLACE &THISFIELD WITH lcField
CASE START >=11 AND START < NUMFIELDS && field with currency
REPLACE &THISFIELD WITH lnField

CASE START = NUMFIELDS && the real date field
REPLACE REALDATE WITH ldField
ENDCASE
ENDFOR
ENDSCAN

Like I said, This works but There has got to be a faster way.

I am sorry it is hard to read. I don't know how to make it look like real VFP code in the UT.

Thanks in advance for the advice.
What is Wisdom?
Wisdom - The ability to respond to any situation according to God's Plan.
Therefore:
USE Wisdom IN Everything ORDER priority AS Knowledge
SELECT Knowledge
BROWSE FOR Understanding WHERE Wisdom=Guide

LeRoy Jackson
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform