Kennung Eins
2004-12-10, 04:49:43
Ich murkele seit nunmehr 4 Tagen an einem Problem rum, wofuer ich noch immer keine Loesung gefunden habe.
Worum es eigentlich geht, ist ganz einfach:
Ich arbeite an einer Webanwendung, die Daten aus verschiedenen Tabellen einer Datenbank anzeigen und updaten soll.
Es werden erst alle Daten ausgelesen und in ein Grid gebannt, dann mochte ich ein DataAdapter.Update machen.
Und da liegt das Problem.
Also hier mal, was ich bisher habe:
Lesen:
Ein DataAdapter, der je Tabelle neu erstellt wird, und der das DataSet jeweils mit neuen Daten aus unterschiedlichen Tabellen fuellt.
Schreiben:
Ich erstelle ein neues SQL-Connection Object. Dann baue ich mit dem SQLCommandBuilder ueber meinem DataAdapter die Commands, dann kommt das DataAdapter(dataSet).
Lesen klappt wunderbar:
sqlcn=new SqlConnection(<blah>);
daVehicles = new SqlDataAdapter("SELECT ",sqlcn);
dataSet=new DataSet();
daVehicles.Fill(dataSet,"Tb_CJL_Vehicle");
daVehicles = new SqlDataAdapter("SELECT",sqlcn);
daVehicles.Fill(dataSet,"Tb_CJL_Airplane");
<...>
switch (RadioButtonList1.SelectedIndex)
{
case 0:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Vehicle"];
break;
case 1:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Airplane"];
break;
<...>
}
dgVehicles.DataBind();
}
Nun schreiben: sqlcn=new SqlConnection(<blah>);
SqlCommandBuilder sqlcmdbld = new SqlCommandBuilder( daVehicles );
daVehicles.UpdateCommand = sqlcmdbld.GetUpdateCommand();
daVehicles.DeleteCommand = sqlcmdbld.GetDeleteCommand();
daVehicles.InsertCommand = sqlcmdbld.GetInsertCommand();
daVehicles.Update( dataSet ); // Error hier!
dgVehicles.EditItemIndex = -1;
switch (RadioButtonList1.SelectedIndex)
{
case 0:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Vehicle"];
break;
case 1:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Airplane"];
break;
<...>
}
dgVehicles.DataBind();
Der Fehler, den ich krieg, lautet:
"Dynamic SQL generation is not supported against multiple base tables. "
Und das verstehe ich nicht. Sollte der DataAdapter nicht auch multiple tables updaten koennen?
Worum es eigentlich geht, ist ganz einfach:
Ich arbeite an einer Webanwendung, die Daten aus verschiedenen Tabellen einer Datenbank anzeigen und updaten soll.
Es werden erst alle Daten ausgelesen und in ein Grid gebannt, dann mochte ich ein DataAdapter.Update machen.
Und da liegt das Problem.
Also hier mal, was ich bisher habe:
Lesen:
Ein DataAdapter, der je Tabelle neu erstellt wird, und der das DataSet jeweils mit neuen Daten aus unterschiedlichen Tabellen fuellt.
Schreiben:
Ich erstelle ein neues SQL-Connection Object. Dann baue ich mit dem SQLCommandBuilder ueber meinem DataAdapter die Commands, dann kommt das DataAdapter(dataSet).
Lesen klappt wunderbar:
sqlcn=new SqlConnection(<blah>);
daVehicles = new SqlDataAdapter("SELECT ",sqlcn);
dataSet=new DataSet();
daVehicles.Fill(dataSet,"Tb_CJL_Vehicle");
daVehicles = new SqlDataAdapter("SELECT",sqlcn);
daVehicles.Fill(dataSet,"Tb_CJL_Airplane");
<...>
switch (RadioButtonList1.SelectedIndex)
{
case 0:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Vehicle"];
break;
case 1:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Airplane"];
break;
<...>
}
dgVehicles.DataBind();
}
Nun schreiben: sqlcn=new SqlConnection(<blah>);
SqlCommandBuilder sqlcmdbld = new SqlCommandBuilder( daVehicles );
daVehicles.UpdateCommand = sqlcmdbld.GetUpdateCommand();
daVehicles.DeleteCommand = sqlcmdbld.GetDeleteCommand();
daVehicles.InsertCommand = sqlcmdbld.GetInsertCommand();
daVehicles.Update( dataSet ); // Error hier!
dgVehicles.EditItemIndex = -1;
switch (RadioButtonList1.SelectedIndex)
{
case 0:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Vehicle"];
break;
case 1:
dgVehicles.DataSource = dataSet.Tables["Tb_CJL_Airplane"];
break;
<...>
}
dgVehicles.DataBind();
Der Fehler, den ich krieg, lautet:
"Dynamic SQL generation is not supported against multiple base tables. "
Und das verstehe ich nicht. Sollte der DataAdapter nicht auch multiple tables updaten koennen?