Im new to foxpro and it
s work areas are something i dont really don
t get so that`s likely where the problem is.
Basically i have a form that takes 2 .csv files and puts them into foxpro tables.
I get a run time error at the last line of this, can anyone see the problem?
web_file = Thisform.mcFile
web_file2 = thisform.mcfile2
web_letter = Thisform.mcLetter
web_gl = Thisform.mcGl
web_gl2 = Thisform.mcGl2
Set Date To Dmy
Close Data
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
mcFile = Thisform.mcFile
mcFile2 = Thisform.mcFile2
Wait Clear
If File("web_temp.dbf")
Delete File web_temp.Dbf
Endif
Create Table web_temp (;
email1 C(40),;
opentime1 C(40),;
o2idnumb1 C(10))
Use
Select 0
USE web_temp Exclusive
Append From &web_file Delim
If File("web_temp2.dbf")
Delete File web_temp2.Dbf
Endif
Create Table web_temp2 (;
email C(40),;
opentime C(40),;
o2idnumb C(10))
Use
Select 0
USE web_temp2 Exclusive
APPEND FROM &web_file2 Delim
Also, im not the original author, im the maintenance guy. so if things look weird its because ive been using his code without really understanding it.
Yup, looks like very old code but let me try to help you understand what is going on...
*/ create local memory variables (web_file, web_file2, etc) from properties
*/ that exist on the form (Thisform.mcFile, Thisform.mcFile2) No problems here
web_file = Thisform.mcFile
web_file2 = thisform.mcfile2
web_letter = Thisform.mcLetter
web_gl = Thisform.mcGl
web_gl2 = Thisform.mcGl2
*/ If doing an import of data that is "Date" based, Foxpro will expect it in
*/ Day Month Year format, but you don't appear to be doing anything with it
*/ during your import of CSV file
Set Date To Dmy
*/ Close database(s) that may be open
Close Data
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/ Does the exact same as above with "web_file" and "web_file2",
*/ so you now have two variables each with exact same values...
mcFile = Thisform.mcFile
mcFile2 = Thisform.mcFile2
*/ clear the "wait" window
Wait Clear
*/ Look to see if there is an old version of "Web_Temp.dbf", if so,
*/ delete it and recreate it with the provided "create table" structure.
If File("web_temp.dbf")
Delete File web_temp.Dbf
Endif
Create Table web_temp (;
email1 C(40),;
opentime1 C(40),;
o2idnumb1 C(10))
*/ These three lines are not needed. When you "CREATE TABLE", you are
*/ explicitly STARTING the file in exclusive mode, no need to close
*/ and re-open exclusively.
Use
Select 0
USE web_temp Exclusive
*/ Take the content from the file by the name found in the variable "web_file".
*/ This could cause a problem if the file has embedded spaces in the name...
*/ the preferred method is to use ( parens ). The expectation of "Delim" is
*/ that the file is comma delimited between each expected column name
&& Append From &web_file Delim
Append from (web_file) Delim
*/ Do the same here, but for the second file going into a second
*/ "Temp" table for processing
If File("web_temp2.dbf")
Delete File web_temp2.Dbf
Endif
Create Table web_temp2 (;
email C(40),;
opentime C(40),;
o2idnumb C(10))
*/ Again, dont need this
Use
Select 0
USE web_temp2 Exclusive
&& APPEND FROM &web_file2 Delim
append from (web_file2) Delim
Now, all that said, here is some super shortcuts for you, especially if these are in fact temporary tables that you would otherwise be "discarding" when finished...
*/ The above doesn't confirm expected files exist, so I would pre-check
if not file( Thisform.mcFile )
messagebox( "Sorry, the file " + Thisform.mcFile + " does not exist" )
return
endif
if not file( Thisform.mcFile2 )
messagebox( "Sorry, the file " + Thisform.mcFile2 + " does not exist" )
return
endif
*/ In case a cursor/table is already open by the name "Web_Temp", close it
use in select( "Web_Temp" )
*/ Create a new table (temporary table that automatically
*/ erases itself when closed when you are finished with it
create cursor Web_Temp (;
email1 C(40),;
opentime1 C(40),;
o2idnumb1 C(10))
*/ Append from the file as before
append from ( Thisform.mcFile ) delim
*/ Go to another "work area" VFP allows up to 65535 different work areas, but if you
*/ ever needed that many tables open simultaneously, you have bigger problems.
select 0
*/ Same here, but for your SECOND table
use in select( "Web_Temp2" )
Create cursor web_temp2 (;
email C(40),;
opentime C(40),;
o2idnumb C(10))
*/ Append from the file as before
append from ( Thisform.mcFile2 ) delim
*/ Done, continue with rest
If you have a file that is underlying as hex values, they'll just be pulled-in verbatim as would be seen in a notepad editor. (or via MODIFY COMMAND NameOfTheFile) from within VFP