ID: Q115728
The information in this article applies to:
After SIMBA.DLL has been used to interact with either a .CSV or .TXT file, the FoxPro default directory is set to the location of the data file.
To work around this problem, do the following:
1. Use SYS(2003) to store the current directory to a memory variable:
curdir = SYS(2003)
2. Execute the ODBC code that uses the SIMBA.DLL Text driver.
3. Issue a SET DEFAULT TO statement to switch back to the original
directory:
SET DEFAULT TO &curdir
Microsoft has confirmed this to be a problem with the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
SIMBA.DLL, the single-tier ODBC driver used to access data from text files, processes information from any of four different file formats: CSV (Comma- Separated Value) Delimited, Tab Delimited, Custom Delimited, or Fixed Length. Regardless of the file format chosen for the Data Source in the ODBC Driver Manager Setup dialog box, a call to the driver results in a switch of FoxPro's default directory to the directory in which the data source file resides.
1. In Control Panel, open the ODBC Driver Manager and set up the "Text
Files (*.txt; *.csv)" driver with a Data Source name of "Simba Test" and
a directory name of "c:\<foxpro_directory>\mytext".
2. Copy some text files (TEXT1.CSV, TEXT2.CSV, and so on) to
C:\<foxpro_directory>\MYTEXT. The contents of the files do not matter.
3. Make sure FPSQL.FLL is in the FoxPro program directory,
c:\<foxpro_directory>.
4. Start FoxPro and set the default FoxPro directory:
SET DEFAULT TO c:\<foxpro_directory>
5. In the Command window, type:
MODIFY COMMAND simba
6. Type the following lines of code:
* Program: SIMBA.PRG
* Initialize
SET LIBRARY TO SYS(2004)+"FPSQL.FLL"
PUBLIC errval, errmsg, handle
errval=0
errmsg=""
sourcename="Simba Test"
user=""
passwd=""
* Connect
handle = DBCONNECT(sourcename,user,passwd)
IF handle > 0
WAIT WINDOW "Successfully Connected" NOWAIT
ELSE
error = DBERROR(0,@errmsg,@errval)
WAIT WINDOW STR(error)+" "+STR(errval)+" "+errmsg
ENDIF
* View tables (text files) out there (TEXT1.CSV, TEXT2.CSV, etc.)
err=DBTABLES(handle,"'TABLE'")
DO errhand WITH err,"DBTABLES()"
IF err>0
BROWSE
ENDIF
* Disconnect
err=DBDISCONN(handle)
DO errhand WITH err,"DBDisconn()"
SET LIBRARY TO
CLOSE ALL
* Error handler
PROCEDURE errhand
PARAMETERS err,command
IF err > 0
WAIT WINDOW ALLTRIM(UPPER(command))+" Completed Successfully" ;
NOWAIT
ELSE
WAIT WINDOW UPPER(COMMAND)+" NOT Completed"
error=DBERROR(handle,@errmsg,@errval)
WAIT WINDOW STR(error)+" "+STR(errval)+" "+errmsg
ENDIF
RETURN
4. Press CTRL+W to close and save the program.
5. In the Command window, type:
DO simba.prg
The program makes a connection to the data source and displays a Browse
window of tables (text files TEXT1.CSV, TEXT2.CSV, and so on).
7. Press CTRL+W to close the Browse window.
8. In the Command window, type
? SYS(2003)
and look at the line printed in the desktop. The default directory,
which is returned by SYS(2003), has changed from "c:\<foxpro_directory>"
to "c:\<foxpro_directory>\mytext".
FoxPro Connectivity Kit "User's Guide," versions 2.5 and 2.6
Additional reference words: FoxWin 2.00 2.50 2.50a 2.50b 2.60 buglist2.00 buglist2.50 buglist2.50a buglist2.50b buglist2.60 KBCategory: kbenv kbprg kbbuglist KBSubcategory: FxtoolCk
Last Reviewed: June 27, 1995