Search code examples
c#oledbdbf

OleDbException: Record is deleted. The search key was not found in any record


I'm trying to import DBF file with one table via C# Method. The code works fine for most of the files but one seems to be corrupt. I'm not sure if it's codepage differences that make it corrupt or something else, if anybody has any insight please help!

 public static void LoadDbf(DataTable destinationDataTable, string DbfDbPath, string DbfDbName)
    {
        destinationDataTable.Clear();
        using (var CS = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DbfDbPath + ";Extended Properties=dBASE III;"))
        {
            try
            {
                string selectTableSyntax = @"SELECT * FROM " + DbfDbName;
                OleDbDataAdapter adapter = new OleDbDataAdapter(selectTableSyntax, CS);
                adapter.Fill(destinationDataTable);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Pogreška prilikom učitavanja baze " + DbfDbName + ".\r\n\r\n" + ex.ToString());
            }
            finally
            {
                CS.Close();
            }
        }
    }

Solution

  • Fixed it with the help of this article:

    http://www.codeproject.com/Articles/24247/Load-a-DBF-into-a-DataTable

    Basically it loads the data via BinaryReader and then stores it into DataTable

    very elegant code with one class and a method

    dataTable = ParseDBF.ReadDBF(fullpath);