Itallian
Grünschnabel
Hi,
ich habe folgendes kleines Problem, ich bekomme immer die Fehlermeldung :
Operation muss eine aktualisierbare Abfrage verwenden.
Diese Fehlermeldung tritt immer dann auf, wenn ich über das OleDbCommand Object in eine Excel Datei schreiben will. Ich will hierbei Daten aus einer Access Datenbank in eine Excel Datein "Importieren". Hierfür habe ich mir eine eigene Klasse geschrieben die mir den zukünftigen Excel Zugriff erleichtern soll:
Aber wie gesagt, die geschilderte Fehlermeldung macht das alles zunichte.
Soweit ich mich erkundigt habe, erscheint die Fehlermeldung wenn die nötigen Rechte nicht eingestellt sind. Wenn ich aber nun über meine MDBZugriffsKlasse eine normale MDB Datenbankl bearbeiten will habe ich keine Probleme damit.
Kann es daran liegen das ich keinen DatenAdapter verwenden? Hab diesen spartanischen Zugriff in der MSDN gefunden und danach sollte es auch gehen.
Bin deshalb ein wenig ratlos und aufgeschemissen...
Euer Itallian
ich habe folgendes kleines Problem, ich bekomme immer die Fehlermeldung :
Operation muss eine aktualisierbare Abfrage verwenden.
Diese Fehlermeldung tritt immer dann auf, wenn ich über das OleDbCommand Object in eine Excel Datei schreiben will. Ich will hierbei Daten aus einer Access Datenbank in eine Excel Datein "Importieren". Hierfür habe ich mir eine eigene Klasse geschrieben die mir den zukünftigen Excel Zugriff erleichtern soll:
Code:
class EasyXLAdapter
{
private OleDbConnection mConnection;
private OleDbCommand mCommand;
public void XLConnect(string xlsName, string pCommand, string table)
{
CreateConnection(xlsName);
}
private void CreateConnection(string xlsName)
{
string source = "Provider=Microsoft.JET.OLEDB.4.0;" +
"Data Source=D:\\inetpub\\fiz\\fiz_db\\" + xlsName +
";Extended Properties='Excel 8.0; HDR=No; IMEX=1'";
mConnection = new OleDbConnection(source);
mCommand = new OleDbCommand();
mConnection.Open();
mCommand.Connection = mConnection;
}
public void xlInsert(DataTable dtTable, string dtTName)
{
foreach (DataRow drCurrent in dtTable.Rows)
{
mCommand.CommandText = CreateInsert(drCurrent, dtTName, null);
mCommand.ExecuteNonQuery();
}
}
#region Alle Überladungen der Klasse xlInsert
public void xlInsert(DataRow dRow, string dTName)
{
mCommand.CommandText = CreateInsert(dRow, dTName, null);
mCommand.ExecuteNonQuery();
}
public void xlInsert(DataTable dtTable, string dtTName, string[] ColumnNames)
{
foreach (DataRow drCurrent in dtTable.Rows)
{
mCommand.CommandText = CreateInsert(drCurrent, dtTName, ColumnNames);
mCommand.ExecuteNonQuery();
}
}
public void xlInsert(DataRow dRow, string dTName, string[] ColumnNames)
{
mCommand.CommandText = CreateInsert(dRow, dTName, ColumnNames);
mCommand.ExecuteNonQuery();
}
#endregion
private string CreateInsert(DataRow drCurrent, string dtTName, string[] ColumnNames)
{
StringBuilder sb = new StringBuilder("INSERT INTO ");
sb.Append(dtTName);
if (ColumnNames != null)
{
sb.Append(" (");
for (int i = 0; i < ColumnNames.GetLength(0); i++)
{
sb.Append(ColumnNames[i]);
if (i < (ColumnNames.GetLength(0) - 1))
{
sb.Append(", ");
}
}
sb.Append(")");
}
sb.Append(" VALUES (");
for (int i = 1; i < drCurrent.Table.Columns.Count; i++)
{
sb.Append("'"+ drCurrent[i].ToString()+"',");
}
sb.Append("'true')");
return sb.ToString();
}
Aber wie gesagt, die geschilderte Fehlermeldung macht das alles zunichte.
Soweit ich mich erkundigt habe, erscheint die Fehlermeldung wenn die nötigen Rechte nicht eingestellt sind. Wenn ich aber nun über meine MDBZugriffsKlasse eine normale MDB Datenbankl bearbeiten will habe ich keine Probleme damit.
Kann es daran liegen das ich keinen DatenAdapter verwenden? Hab diesen spartanischen Zugriff in der MSDN gefunden und danach sollte es auch gehen.
Bin deshalb ein wenig ratlos und aufgeschemissen...
Euer Itallian