Försöker ta bort en rad med hjälp av Command Builder och data adapter men den vill inte bort. Får inga felmedelanden heller. Att uppdatera databasen fungerar utmärkt. Nån som har en idé? Jag har inte använt CommanBuildern på mycket länge så jag gissar villt, men testa att sätta SelectCommand INNAN du skapar CommandBuildern. Om det är så att CommandBuildern skapar kommandona i konstruktorn så har den ju inte tillgång till SelectCommand i det läget. Kanske måste du i sådana fall sätta :Ta bort rad
OleDbDataAdapter myBuildInProgressAdapter = new OleDbDataAdapter();
OleDbCommandBuilder myBuildInProgressCB = new OleDbCommandBuilder(myBuildInProgressAdapter);
try
{
if (myConn.State != ConnectionState.Open)
myConn.Open();
//Building in progress
myBuildInProgressAdapter.SelectCommand = new OleDbCommand("Select * From BuildingsInProgress", myConn);
myBuildInProgressAdapter.Fill(myData, "BuildInProgress");
for(int i = 0; i < myData.Tables["BuildInProgress"].Rows.Count; i++)
{
if((int)myData.Tables["BuildInProgress"].Rows[i]["Tid"] <= 1)
{
OleDbDataAdapter myBuildAdapter = new OleDbDataAdapter();
OleDbCommandBuilder myBuildCB = new OleDbCommandBuilder(myBuildAdapter);
myBuildAdapter.SelectCommand = new OleDbCommand("Select * From Buildings WHERE ProvinceID = "+ myData.Tables["BuildInProgress"].Rows[i]["ProvinceID"] +" AND BuildingID = "+ myData.Tables["BuildInProgress"].Rows[i]["BuildingID"], myConn);
myBuildAdapter.Fill(myData, "Build");
myData.Tables["Build"].Rows[i].BeginEdit();
myData.Tables["Build"].Rows[i]["Antal"] = (int)myData.Tables["Build"].Rows[i]["Antal"] + (int)myData.Tables["BuildInProgress"].Rows[i]["Antal"];
myData.Tables["Build"].Rows[i].EndEdit();
//Här vill jag tabort raden men det går inte?!?
myData.Tables["BuildInProgress"].Rows.RemoveAt(i);
myBuildInProgressAdapter.Update(myData, "BuildInProgress");
//-----------------------------------------------------
myBuildAdapter.Update(myData, "Build");
}
else
{
myData.Tables["BuildInProgress"].Rows[i].BeginEdit();
myData.Tables["BuildInProgress"].Rows[i]["Tid"] = (int)myData.Tables["BuildInProgress"].Rows[i]["Tid"] - 1;
myData.Tables["BuildInProgress"].Rows[i].EndEdit();
myBuildInProgressAdapter.Update(myData, "BuildInProgress");
}
}
Sv: Ta bort rad
adapter.DeleteCommand=commandBuilder.DeleteCommand;
adapter.InsertCommand=commandBuilder.InsertCommand;
adapter.UpdateCommand=commandBuilder.UpdateCommand;
manuellt eller anropa någon metod på CommandBuildern för att generera de nya kommandona?