C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.92945 の関連記事表示

<< 0 >>
■92945  Re[2]: Listの入れ子があるListをソースに設定する方法について
□投稿者/ 河童 -(2019/11/11(Mon) 16:33:27)
    No92934 (魔界の仮面弁士 さん) に返信
    
    こんにちは。魔界の仮面弁士 さん、お返事ありがとうございます。
    
    わからないことが2点あります。
    
    1.リストの値をテーブルにセットする方法
    入れ子があるリストのグループリストからどのようにDataSetに値を設定させれば良いでしょうか?
    
    
    2.キーの設定方法について
    > グループ、チームとユーザは今後増えていきます。
    > チームは複数のグループには属しません。
    > ユーザは複数のチームには属しません。
    データを追加する必要が今後でてくるのですが、そのときのチームとユーザの番号を一意にするのではなく、
    同じ番号も使用したいと思っています。
    例えば、
    group_num team_num user_num 
    1         1        1
    1         1        2
    1         1        3
    2         1        1
    2         1        2
    3         1        1
    のようにgroup_num,team_num,user_numの3つをキーに設定したいです。
    tblGに3つのキーを設定すると、
    teamとuserがnullでエラーが発生します。
    
    新しいユーザを追加するときは、
    group_num,team_num,user_numで重複がなくuser_numの最大値を設定したいです。
    
    同様にチームを追加するときは、
    groupj_num,team_numuで重複がなくteam_numの最大値を設定したいです。
    
    
            private void FormMain_Load(object sender, EventArgs
            {
    
                #region 型付DataSetを使えば、この部分をデザイン時に作成しておくこともできる
                var tblG = ds.Tables.Add("Group");
                tblG.Columns.Add("group_num", typeof(int));
                tblG.Columns.Add("group_name");
                tblG.Columns.Add("team_num");
                tblG.Columns.Add("user_num");
                tblG.PrimaryKey = new DataColumn[] { tblG.Columns["group_num"] };
                //tblG.PrimaryKey = new DataColumn[] { tblG.Columns["group_num"], tblG.Columns["team_num"], tblG.Columns["user_num"] };
    
                var tblT = ds.Tables.Add("Team");
                tblT.Columns.Add("group_num", typeof(int));
                tblT.Columns.Add("team_num", typeof(int));
                tblT.Columns.Add("team_name");
                tblT.PrimaryKey = new DataColumn[] { tblT.Columns["group_num"], tblT.Columns["team_num"] };
    
                var tblU = ds.Tables.Add("User");
                tblU.Columns.Add("team_num", typeof(int));
                tblU.Columns.Add("user_num", typeof(int));
                tblU.Columns.Add("user_name");
                tblU.PrimaryKey = new DataColumn[] { tblU.Columns["team_num"], tblU.Columns["user_num"] };
    
                ds.Relations.Add("G_T", tblG.Columns["group_num"], tblT.Columns["group_num"]);
                ds.Relations.Add("T_U", tblT.Columns["team_num"], tblU.Columns["team_num"]);
    
                bindingSource1.DataSource = ds;
                bindingSource1.DataMember = "Group";
                bindingSource2.DataSource = bindingSource1;
                bindingSource2.DataMember = "G_T";
                bindingSource3.DataSource = bindingSource2;
                bindingSource3.DataMember = "T_U";
    
                dgvGroup.DataSource = bindingSource1;
                dgvTeam.DataSource = bindingSource2;
                dgvUser.DataSource = bindingSource3;
    
                dgvGroup.Columns["team_num"].Visible = false;
                dgvGroup.Columns["user_num"].Visible = false;
    
                dgvTeam.Columns["group_num"].Visible = false;
                dgvUser.Columns["team_num"].Visible = false;
                #endregion
    
    
                // リスト作成
                GroupLst = new List<GroupInfo>();
                GroupInfo d = new GroupInfo();
                d.group_num = 1;
                d.group_name = "GroupA";
                d.teamList = new List<TeamInfo>();
                TeamInfo t = new TeamInfo();
                t.team_num = 1;
                t.team_name = "TeamA";
                t.userList = new List<UserInfo>();
                UserInfo u = new UserInfo();
                u.user_num = 1;
                u.user_name = "User1";
                t.userList.Add(u);
                d.teamList.Add(t);
                GroupLst.Add(d);
    
                GroupInfo d2 = new GroupInfo();
                d2.group_num = 2;
                d2.group_name = "GroupB";
                d2.teamList = new List<TeamInfo>();
                TeamInfo t2 = new TeamInfo();
                t2.team_num = 2;
                t2.team_name = "TeamB";
                t2.userList = new List<UserInfo>();
                UserInfo u2 = new UserInfo();
                u2.user_num = 2;
                u2.user_name = "User2";
                t2.userList.Add(u2);
                d2.teamList.Add(t2);
                GroupLst.Add(d2);
    
                // 不明点1
                // グループリストからテーブルにどのように設定すれば良いでしょう
                
    
                // データを追加
                ds.Tables["Group"].Rows.Add(1, "GroupA");
                ds.Tables["Group"].Rows.Add(2, "GroupB");
                ds.Tables["Group"].Rows.Add(3, "GroupC");
                ds.Tables["Team"].Rows.Add(1, 1, "GA_TeamA");
                ds.Tables["Team"].Rows.Add(1, 2, "GA_TeamB");
                ds.Tables["Team"].Rows.Add(1, 3, "GA_TeamC");
                // 不明点2
                // チームやユーザが入れ替わることはないのですが、
                // チームとユーザの同じ番号を使いたいです。
                // チームのキーの設定はグループとチームの番号の2種類で
                // ユーザのキーの設定はグループとチームとユーザの番号の3種類で
                // group_numとteam_numの2つを主キーに設定
                //ds.Tables["Team"].Rows.Add(2, 1, "GB_TeamA");
                ds.Tables["Team"].Rows.Add(2, 4, "GB_TeamA");
    
                ds.Tables["User"].Rows.Add(1, 1, "User1");
                ds.Tables["User"].Rows.Add(1, 2, "User2");
                ds.Tables["User"].Rows.Add(2, 3, "User3");
                ds.Tables["User"].Rows.Add(2, 4, "User4");
                ds.Tables["User"].Rows.Add(3, 5, "User5");
                ds.AcceptChanges();
            }
記事No.92931 のレス /過去ログ161より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -