Beispiel #1
0
    /// <summary>削除ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnDelete_Click(FxEventArgs fxEventArgs)
    {
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "DeleteRecord",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        // テーブル
        parameterValue.TableName = "_TableName_";

        // 主キーとタイムスタンプ列
        parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // 結果表示
        this.lblResult.Text = returnValue.Obj.ToString() + "件削除しました。";

        // 画面遷移しない。
        return(string.Empty);
    }
Beispiel #2
0
    /// <summary>データ件数取得処理を実装</summary>
    /// <returns>データ件数</returns>
    public int SelectCountMethod()
    {
        _3TierReturnValue returnValue = null;

        try
        {
            // ここのデータアクセス処理は棟梁のB層を呼び出して実装する。

            // ユーザ情報を取得
            MyUserInfo myUserInfo = MyBaseController.GetUserInfo2();

            // 引数クラスを生成
            _3TierParameterValue parameterValue
                = this.CreateParameter("_TableName_", "SelectCountMethod", myUserInfo);

            // B層を生成
            _3TierEngine b = new _3TierEngine();

            // データ件数取得処理を実行
            returnValue = (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);
        }
        catch (Exception ex)
        {
            MyBaseController.TransferErrorScreen2(ex);
            return(0);
        }

        // データ件数を返却
        //(OracleでdecimalになるケースがあるのでParseしている。)
        return(int.Parse(returnValue.Obj.ToString()));
    }
Beispiel #3
0
    /// <summary>更新ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnUpdate_Click(FxEventArgs fxEventArgs)
    {
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "UpdateRecord",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        // テーブル
        parameterValue.TableName = "_TableName_";

        // 主キーとタイムスタンプ列
        parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];

        // 更新値(TimeStamp列は外す。主キーは採番方法次第。
        parameterValue.InsertUpdateValues = new Dictionary <string, object>();
        // ControlComment:LoopStart-ElseColumn
        parameterValue.InsertUpdateValues.Add("_ColumnName_", this.txt_ColumnName_.Text);
        // ControlComment:LoopEnd-ElseColumn

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // 結果表示
        this.lblResult.Text = returnValue.Obj.ToString() + "件更新しました。";

        // 画面遷移しない。
        return(string.Empty);
    }
Beispiel #4
0
    /// <summary>バッチ更新ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnBatUpd_Click(FxEventArgs fxEventArgs)
    {
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "BatchUpdate",
            (string)Session["DAP"], (MyUserInfo)UserInfoHandle.GetUserInformation());

        // テーブル
        parameterValue.TableName = "Products";

        // 主キーとタイムスタンプ列
        parameterValue.AndEqualSearchConditions = new Dictionary <string, object>();
        parameterValue.AndEqualSearchConditions.Add("ProductID", "");

        // DataTableを設定
        parameterValue.Obj = (DataTable)Session["SearchResult"];

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // 結果表示
        //this.lblResult.Text = returnValue.Obj.ToString() + "件更新しました。";

        // 画面遷移しない。
        return(string.Empty);
    }
Beispiel #5
0
    /// <summary>追加ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnInsert_Click(FxEventArgs fxEventArgs)
    {
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "InsertRecord",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        // テーブル
        parameterValue.TableName = "my_table";

        // 追加値(TimeStamp列は外す。主キーは採番方法次第。
        parameterValue.InsertUpdateValues = new Dictionary <string, object>();
        parameterValue.InsertUpdateValues.Add("columnc", this.txtcolumnc.Text);
        parameterValue.InsertUpdateValues.Add("columnd", this.txtcolumnd.Text);

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // 結果表示
        this.lblResult.Text = returnValue.Obj.ToString() + "件追加しました。";

        // 画面遷移しない。
        return(string.Empty);
    }
Beispiel #6
0
    /// <summary>業務処理を実装</summary>
    /// <param name="parameterValue">引数クラス</param>
    private void UOC_Invoke(_3TierParameterValue parameterValue)
    { //メソッド引数にBaseParameterValueの派生の型を定義可能。
        // 戻り値クラスを生成して、事前に戻り地に設定しておく。
        _3TierReturnValue returnValue = new _3TierReturnValue();

        this.ReturnValue = returnValue;

        // ↓業務処理-----------------------------------------------------

        // データアクセス クラスを生成する
        DaoSuppliers daoSuppliers = new DaoSuppliers(this.GetDam());

        // 全件参照
        DataTable dt1 = new DataTable();

        daoSuppliers.D2_Select(dt1);

        // データアクセス クラスを生成する
        DaoCategories daoCategories = new DaoCategories(this.GetDam());

        // 実行
        DataTable dt2 = new DataTable();

        daoCategories.D2_Select(dt2);

        // 戻り値を戻す
        returnValue.Obj = new DataTable[] { dt1, dt2 };

        // ↑業務処理-----------------------------------------------------
    }
Beispiel #7
0
        /// <summary>1件追加処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_InsertRecord(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // 関連チェック処理
            this.UOC_RelatedCheck(parameterValue);

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の指定

            // 追加値
            // InsertUpdateValues
            foreach (string k in parameterValue.InsertUpdateValues.Keys)
            {
                // nullチェック(null相当を要検討
                if (parameterValue.InsertUpdateValues[k] == null)
                {
                    // == null
                }
                else
                {
                    // != null

                    // 文字列の場合の扱い
                    if (parameterValue.InsertUpdateValues[k] is string)
                    {
                        if (!string.IsNullOrEmpty((string)parameterValue.InsertUpdateValues[k]))
                        {
                            // パラメタ指定
                            cmnDao.SetParameter(k, parameterValue.InsertUpdateValues[k]);
                        }
                    }
                    else
                    {
                        // パラメタ指定
                        cmnDao.SetParameter(k, parameterValue.InsertUpdateValues[k]);
                    }
                }
            }

            // SQLを設定して
            cmnDao.SQLFileName =
                this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                + "_" + this.MethodNameHeaderD + this.MethodLabel_Ins + this.MethodNameFooterD + ".xml";

            // パラメタは指定済み

            // 追加処理を実行
            returnValue.Obj = cmnDao.ExecInsUpDel_NonQuery();

            // ↑業務処理-----------------------------------------------------
        }
    /// <summary>検索ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnSearch_Click(FxEventArgs fxEventArgs)
    {
        // GridViewをリセット
        this.gvwGridView1.PageIndex = 0;
        this.gvwGridView1.Sort("", SortDirection.Ascending);

        // 検索条件の収集
        // AndEqualSearchConditions
        Dictionary <string, object> andEqualSearchConditions = new Dictionary <string, object>();

        // ControlComment:LoopStart-PKColumn
        andEqualSearchConditions.Add("_JoinTextboxColumnName_", this.txt_JoinTextboxColumnName__And.Text);
        // ControlComment:LoopEnd-PKColumn
        // ControlComment:LoopStart-ElseColumn
        andEqualSearchConditions.Add("_JoinTextboxColumnName_", this.txt_JoinTextboxColumnName__And.Text);
        // ControlComment:LoopEnd-ElseColumn
        Session["AndEqualSearchConditions"] = andEqualSearchConditions;

        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "SelectRecord",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        // テーブル
        parameterValue.TableName = "_JoinTableName_";

        // 主キーとタイムスタンプ列
        parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["AndEqualSearchConditions"];

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);
        //Declare Table to bind data to gridview
        DataTable dt = new DataTable();

        dt = returnValue.Dt;
        HttpContext.Current.Session["SearchResult"] = dt;

        // ヘッダーを設定する。
        this.gvwGridView1.Columns[_ColumnNmbr_].HeaderText = "Select";
        // ControlComment:LoopStart-PKColumn
        this.gvwGridView1.Columns[_ColumnNmbr_].HeaderText = "_JoinTextboxColumnName_";
        // ControlComment:LoopEnd-PKColumn
        // ControlComment:LoopStart-ElseColumn
        this.gvwGridView1.Columns[_ColumnNmbr_].HeaderText = "_JoinTextboxColumnName_";
        // ControlComment:LoopEnd-ElseColumn

        //Bind gridview
        this.gvwGridView1.DataSource = dt;
        this.gvwGridView1.DataBind();

        //Return empty string since there is no need to redirect to any other page.
        return(string.Empty);
    }
Beispiel #9
0
    /// <summary>
    /// ページロードのUOCメソッド(個別:初回ロード)
    /// </summary>
    /// <remarks>
    /// 実装必須
    /// </remarks>
    protected override void UOC_FormInit()
    {
        // フォーム初期化(初回ロード)時に実行する処理を実装する

        // TODO:
        _3TierParameterValue parameterValue = null;
        _3TierReturnValue    returnValue    = null;

        if (Session["PrimaryKeyAndTimeStamp"] == null)
        {
            // 追加処理のみ。
            this.btnEdit.Enabled   = false;
            this.btnUpdate.Enabled = false;
            this.btnDelete.Enabled = false;

            // 編集
            this.SetControlReadOnly(false);
        }
        else
        {
            // 詳細表示処理

            // 引数クラスを生成
            parameterValue = new _3TierParameterValue(
                this.ContentPageFileNoEx, "FormInit", "SelectRecord",
                (string)Session["DAP"], (MyUserInfo)this.UserInfo);

            // テーブル
            parameterValue.TableName = "Products";

            // 主キーとタイムスタンプ列
            parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];

            // B層を生成
            _3TierEngine b = new _3TierEngine();

            // データ取得処理を実行
            returnValue = (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

            // 編集状態の初期化

            // 値
            this.txtProductID.Text       = returnValue.Dt.Rows[0]["ProductID"].ToString();
            this.txtProductName.Text     = returnValue.Dt.Rows[0]["ProductName"].ToString();
            this.txtSupplierID.Text      = returnValue.Dt.Rows[0]["SupplierID"].ToString();
            this.txtCategoryID.Text      = returnValue.Dt.Rows[0]["CategoryID"].ToString();
            this.txtQuantityPerUnit.Text = returnValue.Dt.Rows[0]["QuantityPerUnit"].ToString();
            this.txtUnitPrice.Text       = returnValue.Dt.Rows[0]["UnitPrice"].ToString();
            this.txtUnitsInStock.Text    = returnValue.Dt.Rows[0]["UnitsInStock"].ToString();
            this.txtUnitsOnOrder.Text    = returnValue.Dt.Rows[0]["UnitsOnOrder"].ToString();
            this.txtReorderLevel.Text    = returnValue.Dt.Rows[0]["ReorderLevel"].ToString();
            this.txtDiscontinued.Text    = returnValue.Dt.Rows[0]["Discontinued"].ToString();
            // 編集
            this.SetControlReadOnly(true);
        }
    }
Beispiel #10
0
        /// <summary>データ取得処理を実装</summary>
        /// <param name="startRowIndex">開始位置</param>
        /// <param name="maximumRows">取得行数</param>
        /// <returns>DataTable</returns>
        public DataTable SelectMethod(int startRowIndex, int maximumRows)
        {
            _3TierReturnValue returnValue = null;

            try
            {
                // ここのデータアクセス処理は棟梁のB層を呼び出して実装する。

                // ユーザ情報を取得
                MyUserInfo myUserInfo = MyBaseController.GetUserInfo2();

                // 引数クラスを生成
                _3TierParameterValue parameterValue
                    = this.CreateParameter("Products", "SelectMethod", myUserInfo);

                // カラムリスト(射影
                parameterValue.ColumnList =
                    "_s_ProductID_e_, "
                    + "_s_ProductName_e_, "
                    + "_s_SupplierID_e_, "
                    + "_s_CategoryID_e_, "
                    + "_s_QuantityPerUnit_e_, "
                    + "_s_UnitPrice_e_, "
                    + "_s_UnitsInStock_e_, "
                    + "_s_UnitsOnOrder_e_, "
                    + "_s_ReorderLevel_e_, "
                    + "_s_Discontinued_e_";

                // ソート条件
                parameterValue.SortExpression =
                    (string)HttpContext.Current.Session["SortExpression"];
                parameterValue.SortDirection =
                    (string)HttpContext.Current.Session["SortDirection"];

                // ページング条件
                parameterValue.MaximumRows   = maximumRows;
                parameterValue.StartRowIndex = startRowIndex;

                // B層を生成
                _3TierEngine b = new _3TierEngine();

                // データ取得処理を実行
                returnValue = (_3TierReturnValue)b.DoBusinessLogic(
                    (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

                // GridView1.DataSourceから取得できなかったのでSessionに格納。
                HttpContext.Current.Session["SearchResult"] = returnValue.Dt;
            }
            catch (Exception ex)
            {
                MyBaseController.TransferErrorScreen2(ex);
                return(null);
            }

            // 取得データを返却
            return(returnValue.Dt);
        }
Beispiel #11
0
        /// <summary>1件削除処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_DeleteRecord(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の指定

            // AndEqualSearchConditions(主キー
            foreach (string k in parameterValue.AndEqualSearchConditions.Keys)
            {
                // nullチェック(null相当を要検討
                if (parameterValue.AndEqualSearchConditions[k] == null)
                {
                    // == null
                }
                else
                {
                    // != null

                    // 文字列の場合の扱い
                    if (parameterValue.AndEqualSearchConditions[k] is string)
                    {
                        if (!string.IsNullOrEmpty((string)parameterValue.AndEqualSearchConditions[k]))
                        {
                            // パラメタ指定
                            cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                        }
                    }
                    else
                    {
                        // パラメタ指定
                        cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                    }
                }
            }

            // SQLを設定して
            cmnDao.SQLFileName =
                this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                + "_" + this.MethodNameHeaderS + this.MethodLabel_Del + this.MethodNameFooterS + ".xml";

            // パラメタは指定済み

            // 削除処理を実行
            returnValue.Obj = cmnDao.ExecInsUpDel_NonQuery();

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #12
0
    /// <summary>
    /// ページロードのUOCメソッド(個別:初回ロード)
    /// </summary>
    /// <remarks>
    /// 実装必須
    /// </remarks>
    protected override void UOC_FormInit()
    {
        // フォーム初期化(初回ロード)時に実行する処理を実装する

        // TODO:
        _3TierParameterValue parameterValue = null;
        _3TierReturnValue    returnValue    = null;

        if (Session["PrimaryKeyAndTimeStamp"] == null)
        {
            // 追加処理のみ。
            this.btnEdit.Enabled   = false;
            this.btnUpdate.Enabled = false;
            this.btnDelete.Enabled = false;

            // 編集
            this.SetControlReadOnly(false);
        }
        else
        {
            // 詳細表示処理

            // 引数クラスを生成
            parameterValue = new _3TierParameterValue(
                this.ContentPageFileNoEx, "FormInit", "SelectRecord",
                (string)Session["DAP"], (MyUserInfo)this.UserInfo);

            // テーブル
            parameterValue.TableName = "_TableName_";

            // 主キーとタイムスタンプ列
            parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];

            // B層を生成
            _3TierEngine b = new _3TierEngine();

            // データ取得処理を実行
            returnValue = (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

            // 編集状態の初期化

            // 値
            // ControlComment:LoopStart-PKColumn
            this.txt_ColumnName_.Text = returnValue.Dt.Rows[0]["_ColumnName_"].ToString();
            // ControlComment:LoopEnd-PKColumn
            // ControlComment:LoopStart-ElseColumn
            this.txt_ColumnName_.Text = returnValue.Dt.Rows[0]["_ColumnName_"].ToString();
            // ControlComment:LoopEnd-ElseColumn
            // 編集
            this.SetControlReadOnly(true);
            Session["PrimaryKeyAndTimeStamp"] = null;
        }
    }
Beispiel #13
0
    /// <summary>更新ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnUpdate_Click(FxEventArgs fxEventArgs)
    {
        #region  Create the instance of classes here

        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "UpdateRecord",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        //Initialize the data access procedure
        _3TierReturnValue returnValue = null;
        // B layer Initialize
        _3TierEngine b = new _3TierEngine();
        Dictionary <string, object> UpdateWhereConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];
        #endregion

        // ControlComment:LoopStart-JoinTables
        #region  Set the values to be updated to the _TableName_. Then Update to database
        // Remove '_TableName__' from the PrimaryKeyandTimeStamp dictionary Key values so developer need not to change the values manually in Dao_TableName__S3_UPDATE.xml
        parameterValue.AndEqualSearchConditions = new Dictionary <string, object>();
        foreach (string k in UpdateWhereConditions.Keys)
        {
            if (k.Split('_')[0] == "_TableName_")
            {
                parameterValue.AndEqualSearchConditions.Add(k.Split('_')[1], UpdateWhereConditions[k]);
            }
        }
        //Declare InsertUpdateValue dictionary and add the values to it
        parameterValue.InsertUpdateValues = new Dictionary <string, object>();
        // ControlComment:LoopStart-PKColumn
        parameterValue.InsertUpdateValues.Add("_ColumnName_", this.txt_JoinTextboxColumnName_.Text);
        // ControlComment:LoopEnd-PKColumn
        // ControlComment:LoopStart-ElseColumn
        parameterValue.InsertUpdateValues.Add("_ColumnName_", this.txt_JoinTextboxColumnName_.Text);
        // ControlComment:LoopEnd-ElseColumn

        //Reset returnvalue with null;
        returnValue = null;
        //Name of the table  _TableName_
        parameterValue.TableName = "_TableName_";

        // Run the Database access process
        returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        this.lblResult_TableName_.Text = returnValue.Obj.ToString() + " Data is Updated to the table: _TableName_";
        #endregion

        // ControlComment:LoopEnd-JoinTables
        //Return empty string since there is no need to redirect to any other page.
        return(string.Empty);
    }
Beispiel #14
0
        /// <summary>データ件数取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectCountMethod(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の生成&指定
            string whereSQL = this.SetSearchConditions(parameterValue, cmnDao);

            string p = ""; // パラメタ記号
            string s = ""; // 囲い記号開始
            string e = ""; // 囲い記号終了

            // 囲い文字の選択
            if (parameterValue.DBMSType == DbEnum.DBMSType.SQLServer)
            {
                p = "@";
                s = "[";
                e = "]";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.Oracle)
            {
                p = ":";
                s = "\"";
                e = "\"";
            }
            else
            {
                p = "@";
                s = "[";
                e = "]";
            }

            // SQLを設定して
            cmnDao.SQLText = string.Format(
                SELECT_COUNT_SQL_TEMPLATE,
                s + parameterValue.TableName + e, whereSQL)
                             .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e);

            // パラメタは指定済み

            // データ件数を取得
            returnValue.Obj = cmnDao.ExecSelectScalar();

            // ↑業務処理-----------------------------------------------------
        }
    /// <summary>削除ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    /// <remarks>In case of deleting from multiple tables and when the tables have dependent relation, the sequence of execution of delete statements for these tables become necessary.
    /// Developer should decide the sequence of table for the delete operation.
    /// This can be managed by altering the position of code block present in the region 'Delete the data from the [TableName] table' as required</remarks>
    protected string UOC_btnDelete_Click(FxEventArgs fxEventArgs)
    {
        #region  Create the instance of classes here
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "DeleteRecordDM",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        //Initialize the data access procedure
        _3TierReturnValue returnValue = null;
        // B layer Initialize
        _3TierEngine b = new _3TierEngine();
        Dictionary <string, object> DeleteWhereConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];
        // Modifications for DM
        parameterValue.AndEqualSearchConditions = new Dictionary <string, object>();
        parameterValue.TargetTableNames         = new Dictionary <int, string>();
        //Declaring the table counter to add it to TargetTableNames Dictionary
        int TableCounter = 0;
        #endregion

        // ControlComment:LoopStart-JoinTables
        #region  Delete the data from the _TableName_  table
        // Remove '_TableName__' from the PrimaryKeyandTimeStamp dictionary Key values so developer need not to change the values manually in Dao_TableName__S4_Delete.xml
        TableCounter = TableCounter + 1;
        foreach (string k in DeleteWhereConditions.Keys)
        {
            if (k.Split('_')[0] == "_TableName_")
            {
                //Check to avoid duplicate key addition
                if (!parameterValue.AndEqualSearchConditions.ContainsKey(k))
                {
                    parameterValue.AndEqualSearchConditions.Add(k, DeleteWhereConditions[k]);
                }
            }
        }
        //Reset returnvalue with null;
        returnValue = null;
        //Name of the table  _TableName_
        parameterValue.TargetTableNames.Add(TableCounter, "_TableName_");
        #endregion
        // ControlComment:LoopEnd-JoinTables
        // Run the Database access process
        returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        this.lblResult_TableName_.Text = returnValue.Obj.ToString() + " Data is Deleted from the table Successfully";

        //Return empty string since there is no need to redirect to any other page.
        return(string.Empty);
    }
Beispiel #16
0
        /// <summary>三層データバインド用の引数クラスを生成</summary>
        /// <param name="tableName">テーブル名</param>
        /// <param name="methodName">メソッド名</param>
        /// <param name="myUserInfo">ユーザ情報</param>
        /// <returns>三層データバインド用の引数クラス</returns>
        protected _3TierParameterValue CreateParameter(string tableName, string methodName, MyUserInfo myUserInfo)
        {
            // 三層データバインド用の引数クラスを生成
            _3TierParameterValue parameterValue = new _3TierParameterValue(
                tableName + "ConditionalSearch", tableName + "TableAdapter", methodName,
                (string)HttpContext.Current.Session["DAP"], myUserInfo);

            // DBMS
            parameterValue.DBMSType = (DbEnum.DBMSType)HttpContext.Current.Session["DBMS"];

            // テーブル
            parameterValue.TableName = tableName;

            // 検索条件(Sessionはnullチェック不要)
            #region AND

            parameterValue.AndEqualSearchConditions =
                (Dictionary <string, object>)HttpContext.Current.Session["AndEqualSearchConditions"];

            parameterValue.AndLikeSearchConditions =
                (Dictionary <string, string>)HttpContext.Current.Session["AndLikeSearchConditions"];

            #endregion

            #region OR

            parameterValue.OrEqualSearchConditions =
                (Dictionary <string, object[]>)HttpContext.Current.Session["OrEqualSearchConditions"];

            parameterValue.OrLikeSearchConditions =
                (Dictionary <string, string[]>)HttpContext.Current.Session["OrLikeSearchConditions"];

            #endregion

            #region Else

            parameterValue.ElseWhereSQL =
                (string)HttpContext.Current.Session["ElseWhereSQL"];

            parameterValue.ElseSearchConditions =
                (Dictionary <string, object>)HttpContext.Current.Session["ElseSearchConditions"];

            #endregion

            return(parameterValue);
        }
        /// <summary>更新Button</summary>
        /// <param name="fxEventArgs">Event Handlerの共通引数</param>
        /// <returns>URL</returns>
        protected string UOC_btnUpdate_Click(FxEventArgs fxEventArgs)
        {
            // 引数クラスを生成
            _3TierParameterValue parameterValue = new _3TierParameterValue(
                this.ContentPageFileNoEx, fxEventArgs.ButtonID, "UpdateRecord",
                (string)Session["DAP"], (MyUserInfo)this.UserInfo);

            // テーブル
            parameterValue.TableName = "Products";

            // 主キーとタイムスタンプ列
            parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];

            // 更新値(TimeStamp列は外す。主キーは採番方法次第。
            parameterValue.InsertUpdateValues = new Dictionary <string, object>();
            //parameterValue.InsertUpdateValues.Add("ProductID", this.txtProductID.Text);
            parameterValue.InsertUpdateValues.Add("ProductName", this.txtProductName.Text);

            //parameterValue.InsertUpdateValues.Add("SupplierID", this.txtSupplierID.Text);
            parameterValue.InsertUpdateValues.Add("SupplierID", this.ddlSupplierID.SelectedValue);
            //parameterValue.InsertUpdateValues.Add("CategoryID", this.txtCategoryID.Text);
            parameterValue.InsertUpdateValues.Add("CategoryID", this.ddlCategoryID.SelectedValue);

            parameterValue.InsertUpdateValues.Add("QuantityPerUnit", this.txtQuantityPerUnit.Text);
            parameterValue.InsertUpdateValues.Add("UnitPrice", this.txtUnitPrice.Text);
            parameterValue.InsertUpdateValues.Add("UnitsInStock", this.txtUnitsInStock.Text);
            parameterValue.InsertUpdateValues.Add("UnitsOnOrder", this.txtUnitsOnOrder.Text);
            parameterValue.InsertUpdateValues.Add("ReorderLevel", this.txtReorderLevel.Text);
            parameterValue.InsertUpdateValues.Add("Discontinued", this.txtDiscontinued.Text);

            // B層を生成
            _3TierEngine b = new _3TierEngine();

            // データ取得処理を実行
            _3TierReturnValue returnValue =
                (_3TierReturnValue)b.DoBusinessLogic(
                    (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

            // 結果表示
            this.lblResult.Text = returnValue.Obj.ToString() + "件更新しました。";

            // 画面遷移しない。
            return(string.Empty);
        }
    /// <summary>バッチ更新ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnBatUpd_Click(FxEventArgs fxEventArgs)
    {
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "BatchUpdate",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        // テーブル
        parameterValue.TableName = "_TableName_";

        // 主キーとタイムスタンプ列
        parameterValue.AndEqualSearchConditions = new Dictionary <string, object>();

        // 主キー列
        // ControlComment:LoopStart-PKColumn
        parameterValue.AndEqualSearchConditions.Add("_ColumnName_", "");
        // ControlComment:LoopEnd-PKColumn

        // タイムスタンプ列
        // ControlComment:ControlComment:IsRequired-TimeStamp
        // ...
        parameterValue.AndEqualSearchConditions.Add("_TimeStampColName_", "");

        // DataTableを設定
        parameterValue.Obj = (DataTable)Session["SearchResult"];

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // 結果表示
        //this.lblResult.Text = returnValue.Obj.ToString() + "件更新しました。";

        // 更新ボタンの非活性化
        this.btnBatUpd.Enabled = false;

        // 画面遷移しない。
        return(string.Empty);
    }
Beispiel #19
0
    /// <summary>追加ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnInsert_Click(FxEventArgs fxEventArgs)
    {
        #region  Create the instance of classes here
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "InsertRecord",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        //Initialize the data access procedure
        _3TierReturnValue returnValue = null;
        // B layer Initialize
        _3TierEngine b = new _3TierEngine();
        #endregion

        // ControlComment:LoopStart-JoinTables
        #region  Set the values to be inserted into to the _TableName_ . Then insert into database
        //Declare InsertUpdateValue dictionary and add the values to it
        parameterValue.InsertUpdateValues = new Dictionary <string, object>();
        // ControlComment:LoopStart-PKColumn
        parameterValue.InsertUpdateValues.Add("_ColumnName_", this.txt_JoinTextboxColumnName_.Text);
        // ControlComment:LoopEnd-PKColumn
        // ControlComment:LoopStart-ElseColumn
        parameterValue.InsertUpdateValues.Add("_ColumnName_", this.txt_JoinTextboxColumnName_.Text);
        // ControlComment:LoopEnd-ElseColumn

        //Reset returnvalue with null;
        returnValue = null;
        //Name of the table  _TableName_
        parameterValue.TableName = "_TableName_";

        // Run the Database access process
        returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        this.lblResult_TableName_.Text = returnValue.Obj.ToString() + " Data is Inserted into table: _TableName_";
        #endregion

        // ControlComment:LoopEnd-JoinTables
        //Return empty string since there is no need to redirect to any other page.
        return(string.Empty);
    }
Beispiel #20
0
    /// <summary>追加ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnInsert_Click(FxEventArgs fxEventArgs)
    {
        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "InsertRecord",
            (string)Session["DAP"], (MyUserInfo)UserInfoHandle.GetUserInformation());

        // テーブル
        parameterValue.TableName = "Products";

        // 追加値(TimeStamp列は外す。
        parameterValue.InsertUpdateValues = new Dictionary <string, object>();
        //parameterValue.InsertUpdateValues.Add("ProductID", this.txtProductID.Text);
        parameterValue.InsertUpdateValues.Add("ProductName", this.txtProductName.Text);
        parameterValue.InsertUpdateValues.Add("SupplierID", this.txtSupplierID.Text);
        parameterValue.InsertUpdateValues.Add("CategoryID", this.txtCategoryID.Text);
        parameterValue.InsertUpdateValues.Add("QuantityPerUnit", this.txtQuantityPerUnit.Text);
        parameterValue.InsertUpdateValues.Add("UnitPrice", this.txtUnitPrice.Text);
        parameterValue.InsertUpdateValues.Add("UnitsInStock", this.txtUnitsInStock.Text);
        parameterValue.InsertUpdateValues.Add("UnitsOnOrder", this.txtUnitsOnOrder.Text);
        parameterValue.InsertUpdateValues.Add("ReorderLevel", this.txtReorderLevel.Text);
        parameterValue.InsertUpdateValues.Add("Discontinued", this.txtDiscontinued.Text);

        // B層を生成
        _3TierEngine b = new _3TierEngine();

        // データ取得処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // 結果表示
        this.lblResult.Text = returnValue.Obj.ToString() + "件追加しました。";

        // 画面遷移しない。
        return(string.Empty);
    }
Beispiel #21
0
        /// <summary>検索条件の設定</summary>
        /// <param name="parameterValue">引数クラス</param>
        /// <param name="cmnDao">共通Dao</param>
        /// <returns>Where句</returns>
        private string SetSearchConditions(
            _3TierParameterValue parameterValue, CmnDao cmnDao)
        {
            //  検索条件
            string whereSQL = "";

            #region AND

            // AndEqualSearchConditions
            // nullチェック
            if (parameterValue.AndEqualSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.AndEqualSearchConditions.Keys)
                {
                    // フラグ
                    bool isSetted = false;

                    // nullチェック(null相当を要検討
                    if (parameterValue.AndEqualSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null

                        // 文字列チェック
                        if (parameterValue.AndEqualSearchConditions[k] is string)
                        {
                            // 文字列の場合
                            if ((string)parameterValue.AndEqualSearchConditions[k] == "")
                            {
                                // 空文字列(★ 扱いを検討 → 検索条件の空文字列は検索しない扱い
                            }
                            else
                            {
                                // 空文字列でない。
                                isSetted = true;
                            }
                        }
                        else
                        {
                            // オブジェクトの場合
                            isSetted = true;
                        }
                    }

                    // パラメタを設定
                    if (isSetted)
                    {
                        whereSQL = GenWhereAndSetParameter(
                            WHERE_SQL_TEMPLATE_EQUAL, whereSQL,
                            cmnDao, k, parameterValue.AndEqualSearchConditions[k], false);

                        isSetted = false;
                    }
                }
            }

            // AndLikeSearchConditions
            // nullチェック
            if (parameterValue.AndLikeSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.AndLikeSearchConditions.Keys)
                {
                    // nullチェック(null相当を要検討
                    if (string.IsNullOrEmpty(parameterValue.AndLikeSearchConditions[k]))
                    {
                        // 空文字列
                    }
                    else
                    {
                        // 空文字列でない。

                        // パラメタを設定
                        whereSQL = GenWhereAndSetParameter(
                            WHERE_SQL_TEMPLATE_LIKE, whereSQL,
                            cmnDao, k, parameterValue.AndLikeSearchConditions[k], true);
                    }
                }
            }

            #endregion

            #region OR

            // OrEqualSearchConditions
            // nullチェック
            if (parameterValue.OrEqualSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.OrEqualSearchConditions.Keys)
                {
                    // フラグ
                    bool isSetted = false;

                    // nullチェック(null相当を要検討
                    if (parameterValue.OrEqualSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null

                        // OR条件はループする。
                        int i = 0;
                        foreach (object o in parameterValue.OrEqualSearchConditions[k])
                        {
                            // 文字列チェック
                            if (o is string)
                            {
                                // 文字列の場合
                                if ((string)o == "")
                                {
                                    // 空文字列(★ 扱いを検討 → 検索条件の空文字列は検索しない扱い
                                }
                                else
                                {
                                    // 空文字列でない。
                                    isSetted = true;
                                }
                            }
                            else
                            {
                                // オブジェクトの場合
                                isSetted = true;
                            }

                            // パラメタを設定
                            if (isSetted)
                            {
                                whereSQL = GenWhereOrSetParameter(
                                    WHERE_SQL_TEMPLATE_EQUAL, whereSQL, cmnDao, k, o, i, false);

                                isSetted = false;
                                i++;
                            }
                        }
                    }
                }
            }

            // OrLikeSearchConditions
            // nullチェック
            if (parameterValue.OrLikeSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.OrLikeSearchConditions.Keys)
                {
                    // nullチェック(null相当を要検討
                    if (parameterValue.OrLikeSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null

                        // OR条件はループする。
                        int i = 0;
                        foreach (string s in parameterValue.OrLikeSearchConditions[k])
                        {
                            // 文字列の場合
                            if ((string)s == "")
                            {
                                // 空文字列
                            }
                            else
                            {
                                // 空文字列でない。
                                // パラメタを設定
                                whereSQL = GenWhereOrSetParameter(
                                    WHERE_SQL_TEMPLATE_LIKE, whereSQL, cmnDao, k, s, i, true);
                                i++;
                            }
                        }
                    }
                }
            }

            #endregion

            #region その他

            // 追加の検索条件(要:半角スペース)
            whereSQL += " " + parameterValue.ElseWhereSQL;

            // ElseSearchConditions
            // nullチェック
            if (parameterValue.ElseSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.ElseSearchConditions.Keys)
                {
                    // nullチェック(null相当を要検討
                    if (parameterValue.ElseSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null
                        cmnDao.SetParameter(k, parameterValue.ElseSearchConditions[k]);
                    }
                }
            }

            #endregion

            // Where句の付与(要:Trim)
            if (!string.IsNullOrEmpty(whereSQL.Trim()))
            {
                // (要:半角スペース)
                whereSQL = "WHERE " + whereSQL;
            }

            // 先頭の論理演算子を削除
            return(BaseDam.DeleteFirstLogicalOperatoronWhereClause(whereSQL));
        }
Beispiel #22
0
    /// <summary>
    /// ページロードのUOCメソッド(個別:初回ロード)
    /// </summary>
    /// <remarks>
    /// 実装必須
    /// </remarks>
    protected override void UOC_FormInit()
    {
        // フォーム初期化(初回ロード)時に実行する処理を実装する

        // TODO:

        // 更新ボタンの非活性化
        this.btnBatUpd.Enabled = false;

        #region マスタ・データのロードと設定

        // 引数クラスを生成
        // 下位(B・D層)は、テスト クラスを流用する
        _3TierParameterValue parameterValue
            = new _3TierParameterValue(
                  this.ContentPageFileNoEx,
                  "FormInit_PostBack", "Invoke",
                  this.ddlDap.SelectedValue,
                  this.UserInfo);

        // B層を生成
        GetMasterData getMasterData = new GetMasterData();

        // 業務処理を実行
        _3TierReturnValue returnValue =
            (_3TierReturnValue)getMasterData.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        DataTable[] dts = (DataTable[])returnValue.Obj;
        DataTable   dt  = null;
        DataRow     dr  = null;

        // daoSuppliers
        _3TierEngine.CreateDropDownListDataSourceDataTable(
            dts[0], "SupplierID", "CompanyName", out dt, "value", "text");

        // 空の値
        dr          = dt.NewRow();
        dr["value"] = "";
        dr["text"]  = "empty";
        dt.Rows.Add(dr);
        dt.AcceptChanges();

        this.ddlSupplierID_And.DataValueField = "value";
        this.ddlSupplierID_And.DataTextField  = "text";
        this.ddlSupplierID_And.SelectedValue  = "";
        this.ddlSupplierID_And.DataSource     = dt;
        this.ddlSupplierID_And.DataBind();

        this.ddldsdt_Suppliers = dt;

        // daoCategories
        _3TierEngine.CreateDropDownListDataSourceDataTable(
            dts[1], "CategoryID", "CategoryName", out dt, "value", "text");

        // 空の値
        dr          = dt.NewRow();
        dr["value"] = "";
        dr["text"]  = "empty";
        dt.Rows.Add(dr);
        dt.AcceptChanges();

        this.ddlCategoryID_And.DataValueField = "value";
        this.ddlCategoryID_And.DataTextField  = "text";
        this.ddlCategoryID_And.SelectedValue  = "";
        this.ddlCategoryID_And.DataSource     = dt;
        this.ddlCategoryID_And.DataBind();

        this.ddldsdt_Categories = dt;

        #endregion
    }
        /// <summary>
        /// Page LoadのUOCメソッド(個別:初回Load)
        /// </summary>
        /// <remarks>
        /// 実装必須
        /// </remarks>
        protected override void UOC_FormInit()
        {
            // Form初期化(初回Load)時に実行する処理を実装する

            // TODO:
            _3TierParameterValue parameterValue = null;
            _3TierReturnValue    returnValue    = null;

            if (Session["PrimaryKeyAndTimeStamp"] == null)
            {
                // 追加処理のみ。
                this.btnEdit.Enabled   = false;
                this.btnUpdate.Enabled = false;
                this.btnDelete.Enabled = false;

                // 編集
                this.SetControlReadOnly(false);
            }
            else
            {
                // 詳細表示処理

                // 引数クラスを生成
                parameterValue = new _3TierParameterValue(
                    this.ContentPageFileNoEx, "FormInit", "SelectRecord",
                    (string)Session["DAP"], (MyUserInfo)this.UserInfo);

                // テーブル
                parameterValue.TableName = "Products";

                // 主キーとタイムスタンプ列
                parameterValue.AndEqualSearchConditions = (Dictionary <string, object>)Session["PrimaryKeyAndTimeStamp"];

                // B層を生成
                _3TierEngine b = new _3TierEngine();

                // データ取得処理を実行
                returnValue = (_3TierReturnValue)b.DoBusinessLogic(
                    (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

                // 編集状態の初期化

                // 値
                this.txtProductID.Text   = returnValue.Dt.Rows[0]["ProductID"].ToString();
                this.txtProductName.Text = returnValue.Dt.Rows[0]["ProductName"].ToString();

                //this.txtSupplierID.Text = returnValue.Dt.Rows[0]["SupplierID"].ToString();
                this.ddlSupplierID.SelectedValue = returnValue.Dt.Rows[0]["SupplierID"].ToString();
                //this.txtCategoryID.Text = returnValue.Dt.Rows[0]["CategoryID"].ToString();
                this.ddlCategoryID.SelectedValue = returnValue.Dt.Rows[0]["CategoryID"].ToString();

                this.txtQuantityPerUnit.Text = returnValue.Dt.Rows[0]["QuantityPerUnit"].ToString();
                this.txtUnitPrice.Text       = returnValue.Dt.Rows[0]["UnitPrice"].ToString();
                this.txtUnitsInStock.Text    = returnValue.Dt.Rows[0]["UnitsInStock"].ToString();
                this.txtUnitsOnOrder.Text    = returnValue.Dt.Rows[0]["UnitsOnOrder"].ToString();
                this.txtReorderLevel.Text    = returnValue.Dt.Rows[0]["ReorderLevel"].ToString();
                this.txtDiscontinued.Text    = returnValue.Dt.Rows[0]["Discontinued"].ToString();

                // 編集
                this.SetControlReadOnly(true);
            }

            #region マスタ・データのロードと設定

            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            parameterValue
                = new _3TierParameterValue(
                      this.ContentPageFileNoEx,
                      "FormInit_PostBack", "Invoke",
                      this.ddlDap.SelectedValue,
                      this.UserInfo);

            // B層を生成
            GetMasterData getMasterData = new GetMasterData();

            // 業務処理を実行
            returnValue = (_3TierReturnValue)getMasterData.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

            DataTable[] dts = (DataTable[])returnValue.Obj;
            DataTable   dt  = null;
            DataRow     dr  = null;

            // daoSuppliers
            _3TierEngine.CreateDropDownListDataSourceDataTable(
                dts[0], "SupplierID", "CompanyName", out dt, "value", "text");

            dr          = dt.NewRow();
            dr["value"] = "";
            dr["text"]  = "empty";
            dt.Rows.Add(dr);
            dt.AcceptChanges();

            this.ddlSupplierID.DataValueField = "value";
            this.ddlSupplierID.DataTextField  = "text";

            this.ddlSupplierID.DataSource = dt;
            this.ddlSupplierID.DataBind();

            // daoCategories
            _3TierEngine.CreateDropDownListDataSourceDataTable(
                dts[1], "CategoryID", "CategoryName", out dt, "value", "text");

            dr          = dt.NewRow();
            dr["value"] = "";
            dr["text"]  = "empty";
            dt.Rows.Add(dr);
            dt.AcceptChanges();

            this.ddlCategoryID.DataValueField = "value";
            this.ddlCategoryID.DataTextField  = "text";

            this.ddlCategoryID.DataSource = dt;
            this.ddlCategoryID.DataBind();

            // 追加時はSelectedValueに空の値を設定
            if (Session["PrimaryKeyAndTimeStamp"] == null)
            {
                this.ddlSupplierID.SelectedValue = "";
                this.ddlCategoryID.SelectedValue = "";
            }

            #endregion
        }
Beispiel #24
0
        /// <summary>バッチ更新処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_BatchUpdate(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // 関連チェック処理
            this.UOC_RelatedCheck(parameterValue);

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            int       i  = 0; // 件数のカウント
            DataTable dt = (DataTable)parameterValue.Obj;

            // バッチ更新
            foreach (DataRow dr in dt.Rows)
            {
                switch (dr.RowState)
                {
                case DataRowState.Added:     // 追加

                    // SQLを設定して
                    cmnDao.SQLFileName =
                        this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                        + "_" + this.MethodNameHeaderD + this.MethodLabel_Ins + this.MethodNameFooterD + ".xml";

                    // パラメタ指定
                    foreach (DataColumn c in dt.Columns)
                    {
                        // 空文字列も通常の値と同一に扱う
                        cmnDao.SetParameter(c.ColumnName, dr[c]);
                    }

                    // 更新処理を実行
                    i += cmnDao.ExecInsUpDel_NonQuery();

                    break;

                case DataRowState.Modified:     // 更新

                    // SQLを設定して
                    cmnDao.SQLFileName =
                        this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                        + "_" + this.MethodNameHeaderS + this.MethodLabel_Upd + this.MethodNameFooterS + ".xml";

                    // パラメタ指定
                    foreach (DataColumn dc in dt.Columns)
                    {
                        // 主キー・タイムスタンプ列の設定はUP側で。
                        // また、空文字列も通常の値と同一に扱う。
                        if (parameterValue.AndEqualSearchConditions.ContainsKey(dc.ColumnName))
                        {
                            // Where条件は、DataRowVersion.Originalを付与
                            cmnDao.SetParameter(dc.ColumnName, dr[dc, DataRowVersion.Original]);
                        }
                        else
                        {
                            cmnDao.SetParameter(
                                this.UpdateParamHeader + dc.ColumnName + this.UpdateParamFooter, dr[dc]);
                        }
                    }

                    // 更新処理を実行
                    i += cmnDao.ExecInsUpDel_NonQuery();

                    break;

                case DataRowState.Deleted:     // 削除

                    // SQLを設定して
                    cmnDao.SQLFileName =
                        this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                        + "_" + this.MethodNameHeaderS + this.MethodLabel_Del + this.MethodNameFooterS + ".xml";

                    // パラメタ指定
                    foreach (DataColumn c in dt.Columns)
                    {
                        // 主キー・タイムスタンプ列の設定はUP側で。
                        // また、空文字列も通常の値と同一に扱う。
                        if (parameterValue.AndEqualSearchConditions.ContainsKey(c.ColumnName))
                        {
                            // Where条件は、DataRowVersion.Originalを付与
                            cmnDao.SetParameter(c.ColumnName, dr[c, DataRowVersion.Original]);
                        }
                    }

                    // 更新処理を実行
                    i += cmnDao.ExecInsUpDel_NonQuery();

                    break;

                default:     // 上記以外
                    // なにもしない。
                    break;
                }
            }

            // 件数を返却
            returnValue.Obj = i;

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #25
0
    /// <summary>バッチ更新ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    /// <remarks>In case of deleting from multiple tables and when the tables have dependent relation, the sequence of execution of delete statements for these tables become necessary.
    /// Developer should decide the sequence of table for the delete operation.
    /// This can be managed by altering the position of code block present in the region 'Batch Update for [TableName]  table' as required</remarks>
    protected string UOC_btnBatUpd_Click(FxEventArgs fxEventArgs)
    {
        #region  Create the instance of classes here

        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "BatchUpdateDM",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        //Initialize the data access procedure
        _3TierReturnValue returnValue = null;
        // B layer Initialize
        _3TierEngine b = new _3TierEngine();
        parameterValue.AndEqualSearchConditions = new Dictionary <string, object>();
        parameterValue.TargetTableNames         = new Dictionary <int, string>();
        //Declaring the table counter to add it to TargetTableNames Dictionary
        int TableCounter = 0;
        //Keep the copy of the table in session because change in the column name causes the problem in the temperory update after batch update. So keep the copy of the table.
        DataTable dtSession = ((DataTable)Session["SearchResult"]).Copy();
        #endregion

        // ControlComment:LoopStart-JoinTables

        #region  Batch Update for _TableName_  table


        #region This is much needed to handle the duplicate column issue while udpating  _TableName_ using batch update
        TableCounter = TableCounter + 1;
        foreach (DataColumn dc in dtSession.Columns)
        {
            //Replace "." in column names of other tables with "_". This is needed becuase if columns are having "." then we get sql error, so we need to replace "." with "_"
            dc.ColumnName = dc.ColumnName.Replace('.', '_');
        }

        #endregion

        //Reset returnvalue with null;
        returnValue = null;


        //Primary Key Columns
        // ControlComment:LoopStart-PKColumn
        if (!parameterValue.AndEqualSearchConditions.ContainsKey("_JoinTextboxColumnName_"))
        {
            parameterValue.AndEqualSearchConditions.Add("_JoinTextboxColumnName_", "");
        }
        // ControlComment:LoopEnd-PKColumn
        //Timestamp column
        TS_CommentOut_ parameterValue.AndEqualSearchConditions.Add("_TimeStampColName_", "");

        // Table Name
        parameterValue.TargetTableNames.Add(TableCounter, "_TableName_");
        #endregion
        // ControlComment:LoopEnd-JoinTables

        // DataTableを設定
        parameterValue.Obj = dtSession;

        // Run the Database access process
        returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        // Disable the button
        this.btnBatUpd.Enabled = false;
        //No Screen transition
        return(string.Empty);
    }
Beispiel #26
0
 /// <summary>関連チェック処理を実装可能に</summary>
 /// <param name="parameterValue">引数</param>
 protected virtual void UOC_RelatedCheck(_3TierParameterValue parameterValue)
 {
 }
Beispiel #27
0
        /// <summary>データ件数取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectCountMethod(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の生成&指定
            string whereSQL = this.SetSearchConditions(parameterValue, cmnDao);

            string p = ""; // パラメタ記号
            string s = ""; // 囲い記号開始
            string e = ""; // 囲い記号終了
            string f = ""; // For supporting type casting in PostgreSQL

            // 囲い文字の選択
            if (parameterValue.DBMSType == DbEnum.DBMSType.SQLServer)
            {
                p = "@";
                s = "[";
                e = "]";
            }
            //MYSQL and DB2
            else if (parameterValue.DBMSType == DbEnum.DBMSType.MySQL || parameterValue.DBMSType == DbEnum.DBMSType.DB2)
            {
                p = "@";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.Oracle)
            {
                p = ":";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.PstGrS)
            {
                p = "@";
                f = "::text";
            }
            else
            {
                p = "@";
                s = "[";
                e = "]";
            }

            if (parameterValue.DBMSType == DbEnum.DBMSType.PstGrS)
            {
                //Set the Query for PostgreSQL database
                cmnDao.SQLText = string.Format(
                    SELECT_COUNT_POSTGRESQL_TEMPLATE,
                    s + parameterValue.TableName + e, whereSQL)
                                 .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f);
            }
            //MYSQL
            else if (parameterValue.DBMSType == DbEnum.DBMSType.MySQL)
            {
                string SQLtext = string.Format(
                    SELECT_COUNT_SQL_TEMPLATE,
                    parameterValue.TableName, whereSQL)
                                 .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f).Replace("\"", string.Empty);
                cmnDao.SQLText = SQLtext;
            }

            else
            {
                // SQLを設定して And DB2
                cmnDao.SQLText = string.Format(
                    SELECT_COUNT_SQL_TEMPLATE,
                    s + parameterValue.TableName + e, whereSQL)
                                 .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f);
            }

            // パラメタは指定済み

            // データ件数を取得
            returnValue.Obj = cmnDao.ExecSelectScalar();

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #28
0
        /// <summary>データ取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectMethod(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の生成&指定
            string whereSQL = this.SetSearchConditions(parameterValue, cmnDao);

            string selectPagingSqlTemplate = "";

            string p = ""; // パラメタ記号
            string s = ""; // 囲い記号開始
            string e = ""; // 囲い記号終了
            string f = ""; // For supporting type casting in PostgreSQL

            // テンプレート、囲い文字の選択
            if (parameterValue.DBMSType == DbEnum.DBMSType.SQLServer)
            {
                selectPagingSqlTemplate = SELECT_PAGING_SQL_TEMPLATE_SQL_SERVER;

                p = "@";
                s = "[";
                e = "]";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.MySQL)
            {
                selectPagingSqlTemplate = SELECT_PAGING_MYSQL_TEMPLATE;
                p = "@";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.DB2)
            {
                selectPagingSqlTemplate = SELECT_PAGING_DB2_TEMPLATE;
                p = "@";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.Oracle)
            {
                selectPagingSqlTemplate = SELECT_PAGING_SQL_TEMPLATE_ORACLE;

                p = ":";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.PstGrS)
            {
                selectPagingSqlTemplate = SELECT_PAGING_SQL_TEMPLATE_POSTGRESQL;

                p = "@";
                f = "::text";
            }
            else
            {
                selectPagingSqlTemplate = SELECT_PAGING_SQL_TEMPLATE_SQL_SERVER;

                p = "@";
                s = "[";
                e = "]";
            }

            int startRowNum = parameterValue.StartRowIndex + 1;

            string selectPagingSQL = "";

            if (parameterValue.DBMSType == DbEnum.DBMSType.MySQL)
            {
                selectPagingSQL = string.Format(
                    selectPagingSqlTemplate,
                    new string[] {
                    parameterValue.ColumnList,
                    parameterValue.SortExpression,
                    parameterValue.SortDirection,
                    parameterValue.TableName, whereSQL,
                    startRowNum.ToString(), (startRowNum + parameterValue.MaximumRows).ToString()
                }
                    ).Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f).Replace("\"", string.Empty);
            }
            else
            {
                // SQL本体の生成(いろいろ組み込み DB2
                //(DBMSによって可変となる可能性有り)
                selectPagingSQL = string.Format(
                    selectPagingSqlTemplate,
                    new string[] {
                    parameterValue.ColumnList,
                    parameterValue.SortExpression,
                    parameterValue.SortDirection,
                    s + parameterValue.TableName + e, whereSQL,
                    startRowNum.ToString(), (startRowNum + parameterValue.MaximumRows).ToString()
                }
                    ).Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f);
            }
            // DataTableをインスタンス化
            if (parameterValue.DataTableType == null)
            {
                // == null
                returnValue.Dt = new DataTable();
            }
            else
            {
                // != null

                // 型付きDataTable
                //(パブリック・デフォルト・コンストラクタ)
                returnValue.Dt =
                    (DataTable)parameterValue.DataTableType.InvokeMember(
                        null, BindingFlags.CreateInstance, null, null, null);
            }

            // SQLを設定して
            cmnDao.SQLText = selectPagingSQL;

            // パラメタは指定済み

            // DataTableを取得
            cmnDao.ExecSelectFill_DT(returnValue.Dt);

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #29
0
    /// <summary>バッチ更新ボタン</summary>
    /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
    /// <returns>URL</returns>
    protected string UOC_btnBatUpd_Click(FxEventArgs fxEventArgs)
    {
        #region  Create the instance of classes here

        // 引数クラスを生成
        _3TierParameterValue parameterValue = new _3TierParameterValue(
            this.ContentPageFileNoEx, fxEventArgs.ButtonID, "BatchUpdate",
            (string)Session["DAP"], (MyUserInfo)this.UserInfo);

        //Initialize the data access procedure
        _3TierReturnValue returnValue = null;
        // B layer Initialize
        _3TierEngine b = new _3TierEngine();

        //Keep the copy of the table in session because change in the column name causes the problem in the temperory update after batch update. So keep the copy of the table.
        DataTable dtSession = ((DataTable)Session["SearchResult"]).Copy();
        #endregion
        // ControlComment:LoopStart-JoinTables

        #region  Batch Update for _TableName_  table

        #region This is much needed to handle the duplicate column issue while udpating  _TableName_ using batch update
        // to change the column names of table as per Table we should have copy of dtSession table.
        DataTable dt_TableName_ = dtSession.Copy();

        foreach (DataColumn dc in dt_TableName_.Columns)
        {
            //Remove the '_TableName_.' from column names of _TableName_ only so that update will not have any problem.
            //Otherwise When two tables are having same column names then we get an  error "A column named 'Columname' already belongs to this DataTable."
            if (dc.ColumnName.Split('.')[0].Trim() == "_TableName_")
            {
                dc.ColumnName = dc.ColumnName.Split('.')[1].Trim();
            }
            //Replace "." in column names of other tables with "_". This is needed becuase if columns are having "." then we get sql error, so we need to replace "." with "_"
            else
            {
                dc.ColumnName = dc.ColumnName.Replace('.', '_');
            }
        }

        #endregion

        // DataTableを設定
        parameterValue.Obj = dt_TableName_;

        //Reset returnvalue with null;
        returnValue = null;

        parameterValue.AndEqualSearchConditions = new Dictionary <string, object>();
        //Primary Key Columns
        // ControlComment:LoopStart-PKColumn
        parameterValue.AndEqualSearchConditions.Add("_ColumnName_", "");
        // ControlComment:LoopEnd-PKColumn
        //Timestamp column
        TS_CommentOut_ parameterValue.AndEqualSearchConditions.Add("_TimeStampColName_", "");

        // Table Name
        parameterValue.TableName = "_TableName_";

        // Run the Database access process
        returnValue =
            (_3TierReturnValue)b.DoBusinessLogic(
                (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);

        #endregion
        // ControlComment:LoopEnd-JoinTables

        // Disable the button
        this.btnBatUpd.Enabled = false;
        // Keep the original session table with actual column names.
        Session["SearchResult"] = dtSession;
        //No Screen transition
        return(string.Empty);
    }
Beispiel #30
0
        /// <summary>1件取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectRecord(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();

            this.ReturnValue = returnValue;

            // 関連チェック処理
            this.UOC_RelatedCheck(parameterValue);

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の指定

            // AndEqualSearchConditions(主キー
            foreach (string k in parameterValue.AndEqualSearchConditions.Keys)
            {
                // nullチェック(null相当を要検討
                if (parameterValue.AndEqualSearchConditions[k] == null)
                {
                    // == null
                }
                else
                {
                    // != null

                    // 文字列の場合の扱い
                    if (parameterValue.AndEqualSearchConditions[k] is string)
                    {
                        if (!string.IsNullOrEmpty((string)parameterValue.AndEqualSearchConditions[k]))
                        {
                            // パラメタ指定
                            cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                        }
                    }
                    else
                    {
                        // パラメタ指定
                        cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                    }
                }
            }

            // DataTableをインスタンス化
            if (parameterValue.DataTableType == null)
            {
                // == null
                returnValue.Dt = new DataTable();
            }
            else
            {
                // != null

                // 型付きDataTable
                //(パブリック・デフォルト・コンストラクタ)
                returnValue.Dt =
                    (DataTable)parameterValue.DataTableType.InvokeMember(
                        null, BindingFlags.CreateInstance, null, null, null);
            }

            // SQLを設定して
            cmnDao.SQLFileName =
                this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                + "_" + this.MethodNameHeaderS + this.MethodLabel_Sel + this.MethodNameFooterS + ".xml";

            // パラメタは指定済み

            // DataTableを取得
            cmnDao.ExecSelectFill_DT(returnValue.Dt);

            // ↑業務処理-----------------------------------------------------
        }