Example #1
0
        //"ノード名未指定"
        //────────────────────────────────────────
        /// <summary>
        /// コンストラクター。
        /// </summary>
        /// <param name="e_Fpath_ConfigStack"></param>
        public Table_HumaninputImpl(
            string name_Table,
            Expression_Node_Filepath filepath_Nodeconfigtree_Expr,
            Configuration_Node cur_Conf
            )
            : base(name_Table, cur_Conf)
        {
            this.expression_Filepath_ConfigStack = filepath_Nodeconfigtree_Expr;

            this.dataTable = new DataTable();
            this.name_Table = name_Table;
            this.format_Table_Humaninput = new Format_Table_HumaninputImpl();
            this.recordFielddefinition_ = new RecordFielddefinitionImpl();//暫定
        }
Example #2
0
        //────────────────────────────────────────

        /// <summary>
        ///
        /// </summary>
        /// <param name="out_sFieldListList"></param>
        /// <param name="out_O_NewFldDefList"></param>
        /// <param name="src_sNewFieldNameList"></param>
        /// <param name="e_Where"></param>
        /// <param name="tableH_Source"></param>
        /// <param name="log_Reports"></param>
        public static void SelectFieldListList(
            out List <List <string> > listList_SField_Out,
            out RecordFielddefinition out_RecordFielddefinition_New,
            EnumLogic enumWhereLogic,
            List <string> list_SName_NewField_Src,
            List <Recordcondition> list_Reccond,
            Table_Humaninput tableH_Source,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl();

            log_Method.BeginMethod(Info_Table.Name_Library, "Util_Table", "SelectFieldListList", log_Reports);

            //

            RecordFielddefinition recordFielddefinition_New = new RecordFielddefinitionImpl();
            List <int>            list_indexField           = new List <int>();

            //
            // 新しい、列定義リストを作成します。
            //
            {
                // 最初の列は「NO」とします。
                list_SName_NewField_Src.Insert(0, Utility_Table.S_FIELD_NO);

                //fieldIndex
                int nFIx = 0;
                tableH_Source.RecordFielddefinition.ForEach(delegate(Fielddefinition fielddefinition, ref bool isBreak, Log_Reports log_Reports2)
                {
                    if (list_SName_NewField_Src.Contains(fielddefinition.Name_Humaninput))
                    {
                        // 選出されたフィールドだけでリストを作ります。
                        recordFielddefinition_New.Add(fielddefinition);
                        list_indexField.Add(nFIx);
                    }

                    nFIx++;
                }, log_Reports);
            }



            //
            // テーブルに列定義を設定した後で。
            // 移し替えたいデータ値の配列を作ります。
            listList_SField_Out = new List <List <string> >();
            //
            {
                int nEndover = list_indexField.Count;
                foreach (DataRow srcRow in tableH_Source.DataTable.Rows)
                {
                    List <string> sList_NewField = new List <string>();


                    //
                    // 「E■@where」属性を解析します。
                    //
                    // 該当しないレコードは除去していきます。
                    //
                    // 「E■@where」に logic属性が無い場合は logic="and" とします。
                    if (EnumLogic.None == enumWhereLogic)
                    {
                        enumWhereLogic = EnumLogic.And;
                    }
                    bool bHit = Utility_Table.ApplyReccond(srcRow, tableH_Source, enumWhereLogic, list_Reccond, 0, log_Reports);
                    //ystem.Console.WriteLine(InfxenonTable.LibraryName + ":Util_Table.SelectFieldListList: (結果) [" + bHit + "]");

                    if (bHit)
                    {
                        for (int nA = 0; nA < nEndover; nA++)
                        {
                            // TODO:指定のフィールド・インデックスだけをピックアップしたい。
                            int nB = list_indexField[nA];
                            Value_Humaninput o_Value = (Value_Humaninput)srcRow[nB];

                            sList_NewField.Add(o_Value.Text);
                        }

                        listList_SField_Out.Add(sList_NewField);
                    }
                    //hit
                }
            }


            goto gt_EndMethod;

            //
            //
            //
            //
gt_EndMethod:
            out_RecordFielddefinition_New = recordFielddefinition_New;
            log_Method.EndMethod(log_Reports);
        }
Example #3
0
        //────────────────────────────────────────

        /// <summary>
        /// O_TableImpl#AddRecordListで使います。
        /// </summary>
        /// <param name="columnIndex"></param>
        /// <param name="value"></param>
        /// <param name="oTable"></param>
        /// <param name="log_Reports"></param>
        /// <returns></returns>
        public static Value_Humaninput ConfigurationTo_Field(
            int index_Column,
            string value,
            RecordFielddefinition recordFielddefinition,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl();

            log_Method.BeginMethod(Info_Table.Name_Library, "Utility_Row", "ConfigurationTo_Field", log_Reports);
            //

            //
            // セルのソースヒント名
            string nodeConfigtree;

            try
            {
                nodeConfigtree = recordFielddefinition.ValueAt(index_Column).Name_Humaninput;
            }
            catch (ArgumentOutOfRangeException)
            {
                // エラー
                goto gt_Error_Index;
            }

            Value_Humaninput result;

            // 型毎に処理を分けます。
            switch (recordFielddefinition.ValueAt(index_Column).Type_Field)
            {
            case EnumTypeFielddefinition.Int:
            {
                // 空白データも自動処理
                Int_HumaninputImpl cellData = new Int_HumaninputImpl(nodeConfigtree);
                cellData.Text = value;
                result        = cellData;
            }
            break;

            case EnumTypeFielddefinition.Bool:
            {
                // 空白データも自動処理
                Bool_HumaninputImpl cellData = new Bool_HumaninputImpl(nodeConfigtree);
                cellData.Text = value;
                result        = cellData;
            }
            break;

            default:
            {
                String_HumaninputImpl cellData = new String_HumaninputImpl(nodeConfigtree);
                cellData.Text = value;
                result        = cellData;
            }
            break;
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_Index:
            result = null;
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー461!", log_Method);

                Log_TextIndented t = new Log_TextIndentedImpl();

                t.Append("列インデックス[" + index_Column + "](0スタート)が指定されましたが、");
                t.Newline();
                t.Append("列は[" + recordFielddefinition.Count + "]個しかありません。(列定義リストは、絞りこまれている場合もあります)");
                t.Newline();

                // ヒント

                r.Message = t.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return(result);
        }
Example #4
0
        //────────────────────────────────────────
        /// <summary>
        /// 
        /// </summary>
        /// <param name="out_sFieldListList"></param>
        /// <param name="out_O_NewFldDefList"></param>
        /// <param name="src_sNewFieldNameList"></param>
        /// <param name="e_Where"></param>
        /// <param name="tableH_Source"></param>
        /// <param name="log_Reports"></param>
        public static void SelectFieldListList(
            out List<List<string>> listList_SField_Out,
            out RecordFielddefinition out_RecordFielddefinition_New,
            EnumLogic enumWhereLogic,
            List<string> list_SName_NewField_Src,
            List<Recordcondition> list_Reccond,
            Table_Humaninput tableH_Source,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl();
            log_Method.BeginMethod(Info_Table.Name_Library, "Util_Table", "SelectFieldListList",log_Reports);

            //

            RecordFielddefinition recordFielddefinition_New = new RecordFielddefinitionImpl();
            List<int> list_indexField = new List<int>();

            //
            // 新しい、列定義リストを作成します。
            //
            {
                // 最初の列は「NO」とします。
                list_SName_NewField_Src.Insert(0, Utility_Table.S_FIELD_NO);

                //fieldIndex
                int nFIx = 0;
                tableH_Source.RecordFielddefinition.ForEach(delegate(Fielddefinition fielddefinition, ref bool isBreak, Log_Reports log_Reports2)
                {
                    if (list_SName_NewField_Src.Contains(fielddefinition.Name_Humaninput))
                    {
                        // 選出されたフィールドだけでリストを作ります。
                        recordFielddefinition_New.Add(fielddefinition);
                        list_indexField.Add(nFIx);
                    }

                    nFIx++;
                }, log_Reports);
            }

            //
            // テーブルに列定義を設定した後で。
            // 移し替えたいデータ値の配列を作ります。
            listList_SField_Out = new List<List<string>>();
            //
            {
                int nEndover = list_indexField.Count;
                foreach (DataRow srcRow in tableH_Source.DataTable.Rows)
                {
                    List<string> sList_NewField = new List<string>();

                    //
                    // 「E■@where」属性を解析します。
                    //
                    // 該当しないレコードは除去していきます。
                    //
                    // 「E■@where」に logic属性が無い場合は logic="and" とします。
                    if (EnumLogic.None == enumWhereLogic)
                    {
                        enumWhereLogic = EnumLogic.And;
                    }
                    bool bHit = Utility_Table.ApplyReccond(srcRow, tableH_Source, enumWhereLogic, list_Reccond, 0, log_Reports);
                    //ystem.Console.WriteLine(InfxenonTable.LibraryName + ":Util_Table.SelectFieldListList: (結果) [" + bHit + "]");

                    if (bHit)
                    {
                        for (int nA = 0; nA < nEndover; nA++)
                        {
                            // TODO:指定のフィールド・インデックスだけをピックアップしたい。
                            int nB = list_indexField[nA];
                            Value_Humaninput o_Value = (Value_Humaninput)srcRow[nB];

                            sList_NewField.Add(o_Value.Text);
                        }

                        listList_SField_Out.Add(sList_NewField);
                    }
                    //hit

                }

            }

            goto gt_EndMethod;

            //
            //
            //
            //
            gt_EndMethod:
            out_RecordFielddefinition_New = recordFielddefinition_New;
            log_Method.EndMethod(log_Reports);
        }
Example #5
0
        //────────────────────────────────────────
        /// <summary>
        /// 設定された型リストで、テーブルの構造を作成します。
        /// </summary>
        public void CreateTable(RecordFielddefinition recordFielddefinition_New, Log_Reports log_Reports)
        {
            Log_Method log_Method = new Log_MethodImpl();
            log_Method.BeginMethod(Info_Table.Name_Library, this, "CreateTable",log_Reports);

            //

            this.dataTable.Clear();
            this.recordFielddefinition_ = recordFielddefinition_New;

            Exception error_Excp;
            recordFielddefinition_New.ForEach(delegate(Fielddefinition fielddefinition_New, ref bool isBreak2, Log_Reports log_Reports2)
            {
                // 列の型を決めます。
                try
                {
                    this.dataTable.Columns.Add(fielddefinition_New.Name_Trimupper, fielddefinition_New.ToType_Field());
                }
                catch (DuplicateNameException e)
                {
                    error_Excp = e;
                    goto gt_Error_Duplicated;
                }

                goto gt_EndInnermethod;
                //
                #region 異常系
            //────────────────────────────────────────
            gt_Error_Duplicated:
                if (log_Reports.CanCreateReport)
                {
                    Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                    r.SetTitle("▲エラー111!", log_Method);

                    Log_TextIndented s = new Log_TextIndentedImpl();

                    s.Append("列の名前が重複しています。");
                    s.Append(error_Excp.Message);
                    s.Append(Environment.NewLine);
                    s.Append("テーブル名=[");
                    s.Append(this.dataTable.TableName);
                    s.Append("]");

                    r.Message = s.ToString();
                    log_Reports.EndCreateReport();
                }
            goto gt_EndInnermethod;
            //────────────────────────────────────────
                #endregion
            //
            gt_EndInnermethod:
                ;
            }, log_Reports);

            goto gt_EndMethod;
            //
            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
Example #6
0
        /// <summary>
        /// データを渡すことで、テーブルを作成します。
        /// テーブルの型定義と、データを渡します。
        /// 
        /// TODO:データテーブルによって新行を作成するので、データテーブルの列定義と、列定義リストは合わせて置かなければならない。
        /// 
        /// </summary>
        /// <param name="rows"></param>
        /// <param name="fldDefList">列定義は絞りこまれている場合もあります。</param>
        /// <param name="d_Logging_OrNull"></param>
        public void AddRecordList(
            List<List<string>> rows, RecordFielddefinition recordFielddefinition, Log_Reports log_Reports)
        {
            Log_Method log_Method = new Log_MethodImpl();
            log_Method.BeginMethod(Info_Table.Name_Library, this, "AddRecordList",log_Reports);
            //

            string error_NameColumn_TrimUpper;
            Exception error_Excep;
            DataRow error_DataRow;
            List<string> error_List_NameColumn;
            int error_indexColumn;

            // テーブルデータを作成します。
            for (int indexRow = 0; indexRow < rows.Count; indexRow++)
            {
                List<string> list_NameColumn = rows[indexRow];

                // 行オブジェクトを作成。
                DataRow dataRow = this.dataTable.NewRow();

                // TODO:これで合ってる? 入力テーブルの行数と、列定義の列数、小さい方に合わせます。(2012-02-11/仕様変更)
                int indexEndover;
                if (list_NameColumn.Count < recordFielddefinition.Count)
                {
                    indexEndover = list_NameColumn.Count;
                }
                else
                {
                    indexEndover = recordFielddefinition.Count;
                }

                // 行の列数ではなく、列定義の列数でループを回します。
                // 絞りこまれていることがあるからです。
                for (int indexColumn = 0; indexColumn < indexEndover; indexColumn++)
                {
                    // 引き渡されたデータを、行オブジェクトにセット
                    string nameColumn_TrimUpper = recordFielddefinition.ValueAt(indexColumn).Name_Trimupper;
                    if ("" == nameColumn_TrimUpper)
                    {
                        // 列定義になく、データ領域に溢れていたので追加された列か、
                        // 列名なしの列。

                        if (recordFielddefinition.Count <= indexColumn)
                        {
                            // フィールドを追加。
                            // 列名: 空文字列
                            // 値の型:OValue_StringImpl
                            this.dataTable.Columns.Add("", typeof(String_HumaninputImpl));
                        }

                        // セルのソースヒント名
                        string nodeConfigtreeOfCell;
                        {
                            // フィールド名がないので、インデックスで指定します。
                            Log_TextIndented s = new Log_TextIndentedImpl();
                            s.Append("(");
                            s.Append(indexColumn);
                            s.Append(")番フィールド");
                            nodeConfigtreeOfCell = s.ToString();
                        }

                        // 列名がないので、列インデックスで指定して、データを追加。
                        // 値の型:OValue_StringImpl
                        String_HumaninputImpl stringH = new String_HumaninputImpl(nodeConfigtreeOfCell);
                        stringH.Text = list_NameColumn[indexColumn];
                        dataRow[indexColumn] = stringH;
                    }
                    else
                    {
                        if (list_NameColumn.Count <= indexColumn)
                        {
                            // エラー
                            error_DataRow = dataRow;
                            error_List_NameColumn = list_NameColumn;
                            error_indexColumn = indexColumn;
                            goto gt_Error_ColumnIndexOver;
                        }

                        // 値を格納。
                        Value_Humaninput valueH = Utility_Row.ConfigurationTo_Field(//TODO:
                            indexColumn,
                            list_NameColumn[indexColumn],
                            recordFielddefinition,
                            log_Reports
                            );

                        try
                        {
                            dataRow[nameColumn_TrimUpper] = valueH;
                        }
                        catch (ArgumentException e)
                        {
                            error_DataRow = dataRow;
                            error_NameColumn_TrimUpper = nameColumn_TrimUpper;
                            error_Excep = e;
                            goto gt_Error_Field;
                        }
                    }
                }

                // テーブルに行オブジェクトをセット
                this.dataTable.Rows.Add(dataRow);
            }

            goto gt_EndMethod;
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_ColumnIndexOver:
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー463!", log_Method);

                Log_TextIndented s = new Log_TextIndentedImpl();

                s.Append("列定義の個数より フィールド数の少ない入力テーブルが指定されました。");
                s.Newline();

                s.Append("実データのこの行の列数[");
                s.Append(error_List_NameColumn.Count);
                s.Append("] 指定した列インデックス=[");
                s.Append(error_indexColumn);
                s.Append("] フィールド定義の個数=[");
                s.Append(recordFielddefinition.Count);
                s.Append("]");
                s.Newline();

                s.Append("──────────────────────────────テーブルに存在する列名");
                s.Newline();
                foreach (DataColumn col in error_DataRow.Table.Columns)
                {
                    s.Append("実列名=[" + col.ColumnName + "]");
                    s.Newline();
                }
                s.Append("──────────────────────────────");
                s.Newline();

                s.Append("──────────────────────────────定義に存在する列名");
                s.Newline();
                s.Append("定義列名=[" + recordFielddefinition.ToString_DebugDump() + "]");
                s.Newline();
                s.Append("──────────────────────────────");
                s.Newline();

                // ヒント

                r.Message = s.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_Field:
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー462!", log_Method);

                Log_TextIndented s = new Log_TextIndentedImpl();

                s.Append("フィールド名[" + error_NameColumn_TrimUpper + "]が指定されましたが、ありません。");
                s.Newline();

                s.Append("──────────────────────────────テーブルに存在する列名");
                s.Newline();
                foreach (DataColumn col in error_DataRow.Table.Columns)
                {
                    s.Append("実列名=[" + col.ColumnName + "]");
                    s.Newline();
                }
                s.Append("──────────────────────────────");
                s.Newline();

                s.Append("──────────────────────────────定義に存在する列名");
                s.Newline();
                s.Append("定義列名=[" + recordFielddefinition.ToString_DebugDump() + "]");
                s.Newline();
                s.Append("──────────────────────────────");
                s.Newline();

                // ヒント
                s.Append(r.Message_SException(error_Excep));

                r.Message = s.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
Example #7
0
        //────────────────────────────────────────
        /// <summary>
        /// フィールドの定義を取得します。
        /// 
        /// フィールド名の英字大文字、小文字は無視します。
        /// </summary>
        /// <param name="expectedFieldName"></param>
        /// <param name="isRequired">該当なしの時に例外を投げるなら真。</param>
        /// <returns>該当なし、エラーの場合偽。</returns>
        public bool TryGetFieldDefinitionByName(
            out RecordFielddefinition out_RecordFielddefinition3,
            List<string> list_NameField_Expected,
            bool isRequired,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);
            log_Method.BeginMethod(Info_Table.Name_Library, this, "TryGetFieldDefinitionByName",log_Reports);

            bool isResult = true;
            RecordFielddefinition recordFielddefinition1 = new RecordFielddefinitionImpl();

            if (list_NameField_Expected.Count < 1)
            {
                // エラー。
                goto gt_Error_ParamNothingField;
            }

            string error_NameField_Expected;
            int count = 0;
            foreach (string nameField_Expected in list_NameField_Expected)
            {
                //
                // TODO:現状、「ID,NAME」などのカンマ区切りに対応できていない?
                //

                string name_Field_ExpectedUpper = nameField_Expected.ToUpper();

                bool isHit2 = false;
                this.RecordFielddefinition.ForEach(delegate(Fielddefinition fielddefinition,ref bool isBreak2, Log_Reports log_Reports2)
                {
                    if (fielddefinition.Name_Trimupper == name_Field_ExpectedUpper)
                    {
                        //ヒット
                        isHit2 = true;
                        recordFielddefinition1.Add(fielddefinition);
                        count++;
                        isBreak2 = true;
                        goto gt_NextField;
                    }

                gt_NextField:
                    ;
                }, log_Reports);

                if (!isHit2)
                {
                    // 一致するものが無かった場合。
                    recordFielddefinition1.Add(new FielddefinitionImpl("<null>", EnumTypeFielddefinition.String));//桁合わせ。
                    isResult = false;

                    if (isRequired)
                    {
                        // エラー。
                        error_NameField_Expected = nameField_Expected;
                        goto gt_Error_NothingField1;
                    }

                    // 正常
                    goto gt_EndMethod;
                }
            }
            // 正常

            if (count < 1)
            {
                isResult = false;

                if (isRequired)
                {
                    // エラー。
                    StringBuilder s = new StringBuilder();
                    foreach (string sFld in list_NameField_Expected)
                    {
                        s.Append("[");
                        s.Append(sFld);
                        s.Append("]");
                    }
                    error_NameField_Expected = s.ToString();
                    goto gt_Error_NothingField2;
                }

            }

            // 正常
            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_ParamNothingField:
            {
                isResult = false;

                if (log_Reports.CanCreateReport)
                {
                    Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                    r.SetTitle("▲エラー121!", log_Method);

                    Log_TextIndented s = new Log_TextIndentedImpl();
                    s.Append("[");
                    s.Append(this.Name);
                    s.Append("]テーブルの列定義を調べようとしましたが、列名が指定されていません。sExpectedFieldNameList.Count=[");
                    s.Append(list_NameField_Expected.Count);
                    s.Append("]");

                    // ヒント

                    r.Message = s.ToString();
                    log_Reports.EndCreateReport();
                }
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NothingField1:
            isResult = false;
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー131!", log_Method);

                Log_TextIndented s = new Log_TextIndentedImpl();
                s.Append("[");
                s.Append(this.Name);
                s.Append("]テーブルに、[");

                s.Append(error_NameField_Expected);
                s.Append("]フィールドは存在しませんでした。");
                s.Newline();
                s.Newline();

                // ヒント
                s.Append("──────────定義されている列のリスト");
                s.Newline();
                s.Append(recordFielddefinition1.ToString_DebugDump());
                s.Newline();
                s.Append("──────────");
                s.Newline();

                r.Message = s.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NothingField2:
            isResult = false;
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー132!", log_Method);

                Log_TextIndented s = new Log_TextIndentedImpl();
                s.Append("[");
                s.Append(this.Name);
                s.Append("]テーブルに、[");

                s.Append(error_NameField_Expected);
                s.Append("]フィールドは存在しませんでした。");
                s.Newline();
                s.Newline();

                // ヒント
                s.Append("──────────定義されている列のリスト");
                s.Newline();
                s.Append(recordFielddefinition1.ToString_DebugDump());
                s.Newline();
                s.Append("──────────");
                s.Newline();

                r.Message = s.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            out_RecordFielddefinition3 = recordFielddefinition1;
            log_Method.EndMethod(log_Reports);
            return isResult;
        }
Example #8
0
        //────────────────────────────────────────
        /// <summary>
        /// O_TableImpl#AddRecordListで使います。
        /// </summary>
        /// <param name="columnIndex"></param>
        /// <param name="value"></param>
        /// <param name="oTable"></param>
        /// <param name="log_Reports"></param>
        /// <returns></returns>
        public static Value_Humaninput ConfigurationTo_Field(
            int index_Column,
            string value,
            RecordFielddefinition recordFielddefinition,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl();
            log_Method.BeginMethod(Info_Table.Name_Library, "Utility_Row", "ConfigurationTo_Field", log_Reports);
            //

            //
            // セルのソースヒント名
            string nodeConfigtree;
            try
            {
                nodeConfigtree = recordFielddefinition.ValueAt(index_Column).Name_Humaninput;
            }
            catch (ArgumentOutOfRangeException)
            {
                // エラー
                goto gt_Error_Index;
            }

            Value_Humaninput result;

            // 型毎に処理を分けます。
            switch (recordFielddefinition.ValueAt(index_Column).Type_Field)
            {
                case EnumTypeFielddefinition.Int:
                    {
                        // 空白データも自動処理
                        Int_HumaninputImpl cellData = new Int_HumaninputImpl(nodeConfigtree);
                        cellData.Text = value;
                        result = cellData;
                    }
                    break;
                case EnumTypeFielddefinition.Bool:
                    {
                        // 空白データも自動処理
                        Bool_HumaninputImpl cellData = new Bool_HumaninputImpl(nodeConfigtree);
                        cellData.Text = value;
                        result = cellData;
                    }
                    break;
                default:
                    {
                        String_HumaninputImpl cellData = new String_HumaninputImpl(nodeConfigtree);
                        cellData.Text = value;
                        result = cellData;
                    }
                    break;
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_Index:
            result = null;
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー461!", log_Method);

                Log_TextIndented t = new Log_TextIndentedImpl();

                t.Append("列インデックス[" + index_Column + "](0スタート)が指定されましたが、");
                t.Newline();
                t.Append("列は[" + recordFielddefinition.Count + "]個しかありません。(列定義リストは、絞りこまれている場合もあります)");
                t.Newline();

                // ヒント

                r.Message = t.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return result;
        }