Witam,
Wczytuje do DataTable tabele dbf i wszystko jest ok dopóki pola tekstowe w tej tabeli nie maja dlugości większej niż 255 znaków. Czy wiecie skąd ściągnąć sterownik i/lub jak skonfigurować, żeby poprawnie obslugiwał pola tekstowe o długości większej niż 255 znaków?

Zgodnie ze specyfikacją dbf-a w wersjach dbase długość pola tekstowego jest na jednym bajcie. Wyjątkiem są wersje clipper i foxpro tam długość jest na dwóch bajtach (jeden "zwykła" dlugość) i drugi miejsca dziesiętne liczby.

Próbowałem różne ConnectionString-i ale efekt jest zawsze taki sam - pierwsze pole tekstowe o długości większej niż 255 jest pocięte i kolejne pola są albo puste albo też pocięte.

Poniżej kod wczytujący dbf-a do DataTable

private DataTable ZaladujPlikDbf(String nazwa_pliku)
{
	DataTable wynik = null;
	OdbcConnection odbc_polaczenie = null;
	OdbcCommand odbc_komenda = null;

	try
	{
		Directory.SetCurrentDirectory(Path.GetDirectoryName(nazwa_pliku));
		String zapytanie = "SELECT * FROM " + Path.GetFileName(nazwa_pliku);
		// odbc_polaczenie = new OdbcConnection("Driver={Microsoft FoxPro VFP Driver (*.dbf)};" +
		odbc_polaczenie = new OdbcConnection("Driver={Microsoft dBase Driver (*.dbf)};" + 
			"SourceType=DBF;SourceDB=" + Path.GetDirectoryName(nazwa_pliku) + 
			";Exclusive=No;Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;");
		odbc_komenda = new OdbcCommand(zapytanie, odbc_polaczenie);
		odbc_polaczenie.Open();
		wynik = new DataTable();
		wynik.BeginLoadData();
		wynik.Load(odbc_komenda.ExecuteReader());
		wynik.EndLoadData();
		wynik.AcceptChanges();
		odbc_polaczenie.Close();
  }
  catch (Exception blad)
  {
		MessageBox.Show("Blad: " + blad.Message);
  };
	
  return wynik;
}