mvc3 で会計アプリケーションを作成します。仕訳伝票フォームがあります。このフォームのマスターと詳細データは単一のビューにあります。グリッドを作成するためにhtmlテーブルとhtmlテーブルのテキストボックスを使用します。助けを借りて2つのテーブルのSQL Server 2008 r2データベースにデータを保存しましたシングルボタンクリックでのjsonおよびwcfサービスの。(保存ボタンをクリックすると、すべてのマスターおよび詳細データがデータベースに挿入されることを意味します。データベースにデータを編集するための各グリッドラインに編集ボタンはありません。今、フォームの編集を実行したいデータベースへのシングルボタンクリックの機能この目的のために、私はsqltransactionオブジェクトを使用して一時的にデータベースからデータを削除し、新しいデータをデータベースに挿入してから、成功/失敗ベースでsqltran.commitまたはsqltrans.rollbackを実行するという考えを持っています取引。
この目的のために、最初にsqltransactionをコマンドにバインドし、次にdataadapterとストアドプロシージャを使用して機能を削除するDALで関数を作成します。
しかし、ストアド プロシージャは呼び出されず、データは削除されません。SQL Server プロファイラーで監視します。
私はここに私のコードを貼り付けますplzzzどこで間違いをしたか教えてください。
public bool JVInsertDAL1(JVEntity Obj, bool FMode, bool EMode, bool DMode)
{
bool FinRes = false;
DataSet ObjDs = new DataSet();
//function call to fill tables scheme in dataset
ObjDs = FillDSDAL(ObjDs, "", "");
if (FMode == false && DMode == true)
{
ObjDs = FillDSDAL(ObjDs, Obj.VNo, Obj.Type);
}
//==============================
///*********MASTER DATA INSERTION************************
if (EMode != true || DMode != false)
{
if (sqlConnection.State == ConnectionState.Closed)
{
sqlConnection.Open();
}
sqlTransaction = sqlConnection.BeginTransaction();
}
try
{
if (FMode == false && DMode == true)
{
SqlCommand cmdDeleteLedg = new SqlCommand("SpGLdelete", sqlConnection, sqlTransaction);
cmdDeleteLedg.CommandType = CommandType.StoredProcedure;
SqlCommand cmdDeleteHead = new SqlCommand("SpGlHeadDelete", sqlConnection, sqlTransaction);
cmdDeleteHead.CommandType = CommandType.StoredProcedure;
cmdDeleteHead.Parameters.Add("@VNo", SqlDbType.Char, 10, "VNo").Value = Obj.VNo;
cmdDeleteHead.Parameters.Add("@Type", SqlDbType.Char, 2, "Type").Value=Obj.Type;
cmdDeleteLedg.Parameters.Add("@VNo", SqlDbType.Char, 10, "VNo").Value = Obj.VNo;
cmdDeleteLedg.Parameters.Add("@Type", SqlDbType.Char, 2, "Type").Value = Obj.Type;
//-----------------PROCEDURE FOR DELETE RECORD DURING EDIT MODE-------------
ObjDadp.DeleteCommand = cmdDeleteLedg;
ObjDadp.Update(ObjDs, "Gledg");
ObjDadp.DeleteCommand = cmdDeleteHead;
ObjDadp.Update(ObjDs, "Glhead");
ObjDs.AcceptChanges();
ObjDs.Clear();
}
if (FMode == true)
{
SqlCommand sqlCommand = new SqlCommand("SPJVHeadInsert", sqlConnection, sqlTransaction);
sqlCommand.CommandType = CommandType.StoredProcedure;
SqlCommand sqlCommand1 = new SqlCommand("SPJVLedgInsert", sqlConnection, sqlTransaction);
sqlCommand1.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.Add("@Type", SqlDbType.Char, 2, "Type");
sqlCommand.Parameters.Add("@VNo", SqlDbType.Char, 10, "VNo");
sqlCommand.Parameters.Add("@VDate", SqlDbType.DateTime, 10, "VDate");
sqlCommand1.Parameters.Add("@Type", SqlDbType.Char, 2, "Type");
sqlCommand1.Parameters.Add("@VNo", SqlDbType.Char, 10, "VNo");
sqlCommand1.Parameters.Add("@VDate", SqlDbType.DateTime, 10, "VDate");
sqlCommand1.Parameters.Add("@Code", SqlDbType.Char, 10, "Code");
ObjRow = ObjDs.Tables["GlHead"].NewRow();
ObjRow["Type"] = Obj.Type;
ObjRow["VNo"] = Obj.VNo;
ObjRow["VDate"] = Obj.VDate;
ObjRow["RefRemarks"] = Obj.RefRemarks;
ObjDs.Tables["GlHead"].Rows.Add(ObjRow);
foreach (var trans in Obj.GLedg)
{
ObjRow = ObjDs.Tables["Gledg"].NewRow();
ObjRow["Type"] = trans.Type;
ObjRow["VNo"] = trans.VNo;
ObjRow["VDate"] = trans.VDate;
ObjRow["Code"] = trans.Code;
ObjDs.Tables["Gledg"].Rows.Add(ObjRow);
}
//----------------------------------------------------
ObjDadp.InsertCommand = sqlCommand;
ObjDadp.Update(ObjDs, "GlHead");
ObjDadp.InsertCommand = sqlCommand1;
ObjDadp.Update(ObjDs, "GLedg");
//----------------------------------------------------
}//END OF FMODE=TRUE CONDITION
//------------------------------------------------------
//****************************************
if (DMode != true || EMode != true)
// if (EMode != true || DMode != false)
{
sqlTransaction.Commit();
}
//************************************
}//end of try
catch (SqlException sqlError)
{
sqlTransaction.Rollback();
}
catch (Exception ex)
{
sqlTransaction.Rollback();
}
finally
{
if (EMode != true || DMode != true)
{
if (sqlConnection.State == ConnectionState.Open)
{
sqlConnection.Close();
}
}
}
//******end of detail insertion***************************************************
if (FMode == false && DMode == true)
{
if (ObjDs.HasErrors== false)
{
FinRes = true;
}
else
{
FinRes = false;
}
}
if (FMode == true)
{
if (ObjDs.HasErrors == false)
{
FinRes = true;
}
else
{
FinRes = false;
}
}
return FinRes;
}
上記のコードでは、データを保存するために FMode: true、EMode: false、DMode: false を渡し、データをデータベースに挿入します。編集モードでデータベースからデータを削除する場合
、FMode: false、EMode: true、DMode: true 。
最後に、FMode: true、EMode: true、DMode: falseは、編集モードでデータベースから削除した後にデータを挿入します。
私の問題を解決するための提案はありますか?