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. :(
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. :(