TongueNGroove
asked on
Reading dBase 3 and dBase 4 files with nonstandard extensions in C#
Hi. I have been using the FoxPro ODBC driver to open dBase3 files with nonstandard extensions and it works just fine. However, when I try to open a dBaseIV file I get the error "ERROR [42S02] [Microsoft][ODBC Visual FoxPro Driver]Not a table."
I have tried FoxPro OleDB driver, but apparently the files have to be named with a ".dbc" extension.
Is there anyway I can use a single driver to open these dBase 3 and dBase 4 files that have nonstandard extensions?
Below is the code I am using. And I have attached one of the files I am having issues with if anyone wants to see if they can open and read it. I had to change the extension to .txt to get it to upload, but you can change it to .veh or whatever you like.
Thanks.
I have tried FoxPro OleDB driver, but apparently the files have to be named with a ".dbc" extension.
Is there anyway I can use a single driver to open these dBase 3 and dBase 4 files that have nonstandard extensions?
Below is the code I am using. And I have attached one of the files I am having issues with if anyone wants to see if they can open and read it. I had to change the extension to .txt to get it to upload, but you can change it to .veh or whatever you like.
Thanks.
string tagNum = "";
OdbcConnection oConnection = new OdbcConnection("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=C:\\Documents and Settings\\Lee\\Desktop\\Mitchell EMS;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;");
oConnection.Open();
OdbcDataAdapter oDataAdapter = new OdbcDataAdapter("SELECT * FROM 123A.ad1", oConnection);
DataSet oDataSet = new DataSet();
oDataAdapter.Fill(oDataSet);//I get the error right here...
DataTable oDataTable = oDataSet.Tables[0];
foreach (DataRow dr in oDataTable.Rows)
{
tagNum = (dr["PLATE_NO"].ToString().Trim());
}//end foreach
dBaseFile.zip
try changing the connection string
I am using this to open dbase III and dbase IV files in c#
Provider=Microsoft.Jet.OLE DB.4.0;Dat a Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;
I am using this to open dbase III and dbase IV files in c#
Provider=Microsoft.Jet.OLE
ASKER
The problem with that is, the files have to have a standard .dbf extension. The files I am using have different extensions.
So why not just rename the file before opening, then rename back when you're done?
ASKER
I can't rename the files because other systems may be accessing them at the same time and that would cause a lot of issues.
What I need is a driver and connection string that allows me to open dBase3 and dBase4 files with nonstandard extensions.
I have a program called dbase viewer that will open all of these files in a GUI, so I know it's possible. But I have no idea how the program is doing it.
What I need is a driver and connection string that allows me to open dBase3 and dBase4 files with nonstandard extensions.
I have a program called dbase viewer that will open all of these files in a GUI, so I know it's possible. But I have no idea how the program is doing it.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks for link. It does look interesting, but a bit too complex and unwieldy and I am not even sure it would be worth the trouble to try to figure out since it may not work correctly anyway.
You know what complexity you can handle, but I think you're overly pessimistic about the quality of what's offered; I've generally had very good results with stuff from Code Project, and as I said, the dBase file structure isn't overly difficult to process; it was designed in the early days of computing, when computers didn't have as much horsepower and developers weren't tempted to put as many bells and whistles into their systems. The article has been well rated by people using it. Note that there's a download of the actual class file; you're not expected to cut and paste from the web page.
ASKER
Open in new window