首页 > 解决方案 > 如何一键添加多条记录?

问题描述

我正在为一个艺术协会在 Visual Studio 2017 (C#) 中编写一个新软件,以帮助他们注册即将参加比赛的学生的详细信息。我制作了一个这样的 Windows 窗体:形式 当我在文本框、组合框和日期时间选择器中输入详细信息后单击添加按钮细节时,必须更新数据网格视图,如下所示:参与者的计划日期和参与项目必须作为每个日期和项目的四个记录输入表中,而不更改其他详细信息。。我尝试使用此代码

private void button1_Click(object sender, EventArgs e)
    {
        if(pARTICIPATING_ITEMComboBox.Text != "--")
        {
            rEG_IDTableAdapter.Insert(nAME_OF_PARTICIPANTTextBox.Text, cLASSTextBox.Text, sCHOOL_NAMETextBox.Text, pHONE_NUMBER_OF_PARENTTextBox.Text, Convert.ToDateTime(dATE_OF_PROGRAMDateTimePicker.Text), pARTICIPATING_ITEMComboBox.Text, " ", " ");
        };
        if (comboBox1.Text != "--")
        {
            rEG_IDTableAdapter.Insert(nAME_OF_PARTICIPANTTextBox.Text, cLASSTextBox.Text, sCHOOL_NAMETextBox.Text, pHONE_NUMBER_OF_PARENTTextBox.Text, Convert.ToDateTime(dateTimePicker1.Text), comboBox1.Text, " ", " ");
        };
        if (comboBox2.Text != "--")
        {
            rEG_IDTableAdapter.Insert(nAME_OF_PARTICIPANTTextBox.Text, cLASSTextBox.Text, sCHOOL_NAMETextBox.Text, pHONE_NUMBER_OF_PARENTTextBox.Text, Convert.ToDateTime(dateTimePicker2.Text), comboBox2.Text, " ", " ");
        };
        if (comboBox3.Text != "--")
        {
            rEG_IDTableAdapter.Insert(nAME_OF_PARTICIPANTTextBox.Text, cLASSTextBox.Text, sCHOOL_NAMETextBox.Text, pHONE_NUMBER_OF_PARENTTextBox.Text, Convert.ToDateTime(dateTimePicker3.Text), comboBox3.Text, " ", " ");
        };

但这并没有如我所愿。相反,它输入了详细信息:注册号、参与者姓名、班级、学校名称、家长电话号码以及第一个日期和第一列 就像这个在第二个、第三个和第四个日期和项目列中输入的其他详细信息一样,没有得到进入数据网格视图

注意:数据库在 Access 2016 中创建并插入到表单中

标签: c#ms-accessvisual-studio-2017

解决方案


首先,如果条件类似,它应该只是 1

if(condition1 && condition2 && condition3)
{
   insert(...);
   insert(...);
   ...
}

您为相同的参与项目集合使用了 4 个组合框。相反,您可以使用组合框来选择项目,并使用列表框将选定的项目传递给它。之后,使用 foreach 循环,您可以将列表框项添加到 db。

它应该看起来像

private void button1_Click(object sender, EventArgs e)
{
    foreach(item in listbox.items)
    {
        insert(name.text,class.text,item.text,......);
    }
}

此外,如果您将此表分成 2 个单独的表会更好。有关详细信息,您可以在这里查看


推荐阅读