Laden...

OleDBCommand aus DBF Datei

Erstellt von Bernd23 vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.199 Views
B
Bernd23 Themenstarter:in
20 Beiträge seit 2008
vor 13 Jahren
OleDBCommand aus DBF Datei

Hallo

ich habe folgenden Quellcode welcher eine *.DBF Datei in einem DataGridView ausgeben soll.


// Dbase öffnen
string pfad_dbf = "G:\\Testverzeichnis\\probepunkte.dbf";
			
string pfad = pfad_dbf.Substring(0, pfad_dbf.LastIndexOf('\\'));
pfad += "\\";
string source = pfad_dbf.Substring(pfad_dbf.LastIndexOf('\\') + 1);
 

string conStr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " + pfad + "; Extended Properties=DBASE IV;";

con = new OleDbConnection(conStr);
OleDbCommand cmd_sel = new OleDbCommand("SELECT * FROM ["+ source+"]");
cmd_sel.Connection = con;

da = new OleDbDataAdapter();
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
da.SelectCommand = cmd_sel;

dt = new DataTable();
ds = new DataSet();

con.Open();
da.Fill(dt);
da.Fill(ds);
con.Close();

bindingSource1.DataSource = dt;
dataGridView1.DataSource = bindingSource1;

Das kuriose ist die Quelldatei. Wenn deren Name über 8 Zeichen lang ist, liest es der OleDBDataAdapter nicht mehr.
Wenn ich die gleiche *.dbf Datei umbenenne z.B. auf "probe.dbf" dann gehts einwandfrei.

Weiss hier vielleicht jemand wie man das korrigieren kann, damit man in einem Zug importieren kann. Eine Alternative ist nur die Datei vor dem Import zu kopieren und in einen "lesbaren" (<8Zeichen langen Dateinamen) umzubenennen, und nach dem Import zu löschen.

Gruss
Bernd

V
162 Beiträge seit 2010
vor 13 Jahren

Hi,

ich hab da nur eine logische Erklärung.

dBASE IV ist von 1988 und da gab es DOS!
Dort durften Dateinamen nur 8+3 lang sein.

Vielleicht gilt das auch für den dBASE Provider das er die Altlast mit nehmen muss.
Also bleibt dir nichts anderes überig, die Datei nach 8+3 zu benennen.

Ich weiß das aber nicht ob das wirklich so ist. Ist eben nur eine These.

MfG
Björn

Das Leben ist schön!

S
324 Beiträge seit 2007
vor 13 Jahren

mhm...
Ich denke, wenn du die DBC (also den Datebank-Container) der Tabellen öffnest, statt die DFB´s selbst zu öffnen, dann sollte es auch mit längeren Namen funktionieren.

Das selbe Problem solltest du dann auch mit den Spalten-Namen der tabellen haben, dir sind normalerweise auch begrenzt wenn du nur eine einzelne DBF ohne Container benutzt.