PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c# oledb Excel Datentypen unverträglich


darph
2008-11-26, 16:38:18
Ich habe eine Excel-Tabelle. Eine Spalte ist als Text formatiert.

OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);

adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

adapter.InsertCommand = new OleDbCommand(
"INSERT INTO [Datenblatt$] (Motornummer) VALUES(?)");
adapter.DeleteCommand.Parameters.Add("@Ergebnis",
OleDbType.VarChar, 40, "Ergebnis").SourceVersion =
DataRowVersion.Original;

return adapter;

und dann:

OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties=Excel 8.0"); // Imex=1;
OleDbDataAdapter adapter = DataAdapterFactory.CreateDataAdapter(" SELECT * FROM [" + listname + "$]", con);

con.Open();
try
{
DataSet myDataSet = new DataSet();
adapter.Fill(myDataSet);
OleDbCommand command = adapter.InsertCommand;
command.Connection = con;
command.Parameters["@Motornummer"].Value = "aaaaaa";
command.ExecuteNonQuery();

}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
richTextBox1.AppendText(ex.ToString());
}
finally
{
con.Close();
}


Lesen geht ohne Problem.

Schreiben bringt folgende Fehlermeldung:

Datentypen in Kriterienausdruck unverträglich.


Was genau soll ich als Datentyp angeben? "Text" geht nicht. Ich kann Integerwerte angeben (anstelle von "aaaaaaa"), aber das ist ja nicht Sinn und Zweck der Übung. :(

gr@fz@hL
2008-11-28, 13:00:59
Versuch mal, deinem einzufügendem text ein Hochkomma voranzustellen, also statt "aaaaaa" ein "'aaaaa".

darph
2008-11-29, 11:10:13
X-D X-(

EXCEL ist so X-(

Ich kann den Datentyp nicht definieren. Was ich in Excel als Darstellungsformat definiere hat mit dem Datentyp im SQL-Wrapper nyx zu thun.

Stattdessen legt Excel/der Wrapper seinen eigenen Datentyp fest: UND ZWAR RÄT ES ANHAND DER ERSTEN ACHT ZEILEN! X-( Es kuckt sich die ersten acht Zeilen an, was dort drin ist, und interpretiert das dann je nach dem, welcher Datentyp am Häufigsten vorkommt. :ucrazy:

Jetzt ist das hier angesprochene Feld in diesem Fall ein String (!) aus acht Ziffern (in zwei Gruppen zu vier Ziffern). Wenn ich das auch als String einfügen will, muß es in meinem Code mit Hochkomma versehen werden (wie du schrubst, gr@fz@hL, danke dafür =)), aber man muß auch darauf achten, daß die im Dokument schon eingefügten Testwerte auch mit einem Hochkomma versehen sind.

Ich hatte einfach über Excel gesagt "Interpretiere als Text!", aber das wird völlig ignoriert.

Sowas Beklopptes :rolleyes: