Solved

Cvs files date field missing

Posted on 2016-10-13
3
34 Views
Last Modified: 2016-11-21
I want to collect the dates of each filename. I am getting all the data of each filename except the dates. The date comes from the filenames like the building number. The building in the filenames are being stored with the other data except the dates. The filenames, for example, looks like this 100_2016-10-03_20-31.  The first three numbers are the building numbers, then the date, and the _10-31 is the time. How can I get the dates stored as well?  I have received an error message with this code that is in the program.                                   FOR lnI = 1 TO m.LnCnt
      LcDateStr= Chrtran (StrExact(laFiles.         [m.lnI,1],'_','_')
The error message was File 'strexact.prg' does not exist.
       LdFileDate = Date (Val (m.lcDateStr),Val(Substr (m.lcDateStr,6)),Val (Substr (m.lcDateStr,AT ('-',m.lcDateStr,2)+1)))
DO ImportFile WITH m.lcPath, laFiles [m.lnI,1], m.ldFileDate

 The error message was Function argument value, type, or count is invalid.

OR IF I use the code below, I get an error message saying, " File 'strexact.prg' does not exist", and Function name is missing.
 

This is the code that is being used.

&&& CVS START

Create cursor mycursor (;
                              Building N (3,0), ;
                              Item no i,;
                              Quantity I , ;
                              Description c (21),;
                              Date d)

* ---- Load cursor with CSV data.

Set order to building ascending

Lcpath = "H:\\Obra\Ldy\"
LcFileMask="*.cvs"

LnCnt = ADIR (laFiles, m.lcPath + m.lcFileMask)

Set century on
Set date American

LOCAL lcFileName, ldFileDate, LcDateStr

FOR lnI = 1 TO m.LnCnt
      LcDateStr = Chrtran (StrExact (laFiles[m.lnI,1],'_','_')
      DO ImportFile WITH m.lcPath, laFiles [m.lnI,1], Date (&lcDateStr)
NEXT
SELECT Mycursor

Procedure Import File
LPARAMETERS lcPath, lcFileName, lcDate, lcFileMask
LOCAL lcLine, lnFH, lnBuilding, date, lcDateStr, FileName,

LnFH = FOPEN (m.lcPath +m.lcFileName)
IF m.lnFH > 0
   LnBuilding = VAL (m.lcFileName)
   FOR lnI= 1TO 3
          lcLine = FGETS (m.lnFH, 1000)
   NEXT
   DO WHILE !FEOF (m.lnFH)
         LcLine = FGETS (m.lnFH, 1000)
         LnA = VAL (LEFT (m.lcLine, AT (',', m.lcLine)-1))
         LcLine = Substr (m.lcLine, AT (',', m.lcLine)+1)
         LnB= VAL (LEFT (m.lcLine, AT (',', m.lcLine)-1))

         LcLine = SUBSTR (m.lcLine, AT (',', m.lcLine)+1
          LcC= ALLTRIM (SUBSTR (m.lcLine, AT ('"', m.lcLine)+1))
          LcC= LEFT(m.lcC, LEN (m.lcC)-1)
          INSERT INTO MyCursor (building, date, itemno, quantity, description) VALUES (m.lnBuilding, lcDateStr, m.lnA, m.lnB, m.lcC)

    ENDDO
    = FCLOSE (m.lnFH)
ELSE
ENDIF
0
Comment
Question by:campbme
  • 3
3 Comments
 
LVL 41

Accepted Solution

by:
pcelba earned 500 total points (awarded by participants)
ID: 41842467
First of all StrExact should be  STREXTRACT  (case does not matter but note two missing letters).
I'll write more but you may study this function in VFP help. The latest help version is available at http://vfpx.codeplex.com

Update:
This processing loop should work:
FOR lnI = 1 TO m.LnCnt
      LcDateStr = Chrtran (StrExTRact (laFiles[m.lnI,1],'_','_'), '-', ',')  &&  this will convert the filename to a string, e.g. "2016,10,31"
      DO ImportFile WITH m.lcPath, laFiles [m.lnI,1], Date (&lcDateStr)   && which can then be used as a macro parameter in the DATE() function
NEXT

Open in new window

A small update is also necessary in the INSERT command:
 INSERT INTO MyCursor (building, date, itemno, quantity, description) VALUES (m.lnBuilding, lcDateStr, m.lnA, m.lnB, m.lcC)
which contains lcDateStr invisible in this context

Correct command is:
 INSERT INTO MyCursor (building, date, itemno, quantity, description) VALUES (m.lnBuilding, lcDate, m.lnA, m.lnB, m.lcC)

where the lcDate is of date data type.
0
 
LVL 41

Expert Comment

by:pcelba
ID: 41863050
I've provided tested solution and my comments are explaining what was wrong in the original code. Lets wait a few more days for the author response.
0
 
LVL 41

Expert Comment

by:pcelba
ID: 41895617
The solution was tested and works correctly in my environment.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
In this article I will describe the Detach & Attach method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
This Micro Tutorial will demonstrate the scrolling table in Microsoft Excel using the INDEX function.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now