You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio新增Assignment时报ASSIGNMENT.BusinessID必填错误如何解决

报错解决方案

根因说明

你遇到的System.Data.OleDb.OleDbException报错,核心原因是Access数据库的ASSIGNMENT表中BusinessID字段为必填字段,你当前的新增代码没有给该字段赋值,插入数据时触发了数据库的非空约束校验,因此报错。

两种可落地的解决方法

方法1:复用现有ID生成逻辑(推荐,适配你现有代码框架)

你提到DataController中已经存在ID生成相关代码,只需要在新增行的字段赋值逻辑中,补充一行给BusinessID赋值的代码即可,修改后的完整代码如下:

private void btnAddAssignment_Click(object sender, EventArgs e)
{
    DataRow newAssignmentRow = DC.dtAssignment.NewRow();
    if (txtAssignmentDescription.Text == "")
    {
        MessageBox.Show("存在未填写的字段", "错误", MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
    }
    else
    {
        try
        {
            // 新增赋值逻辑:调用DataController的ID生成方法,方法名替换为你实际代码中的命名即可
            newAssignmentRow["BusinessID"] = DC.你的ID生成方法名();
            newAssignmentRow["AssignmentDescription"] = txtAssignmentDescription.Text;
            newAssignmentRow["AssignmentDate"] = dtpAssignmentDate.Value;
            newAssignmentRow["AssignmentFee"] = nudFee.Value;
            newAssignmentRow["Status"] = cboStatus.Text;
            DC.dtAssignment.Rows.Add(newAssignmentRow);
            // 修正原代码的文案错误:新增的是Assignment不是Employee
            MessageBox.Show("任务新增成功", "成功");
            DC.UpdateAssignment();
            ClearFields();
        }
        catch (FormatException ex)
        {
            MessageBox.Show("费用字段请输入数字", "错误");
        }
        catch (OleDbException ex)
        {
            MessageBox.Show($"数据保存失败:{ex.Message}", "错误");
        }
    }
}

方法2:修改Access表结构,设置字段自动生成值

如果你不需要自定义BusinessID的生成规则,可以直接把该字段设置为Access的自动编号类型,由数据库自动生成值,不需要修改代码:

  • 打开你的Access数据库文件,找到ASSIGNMENT表
  • 右键点击该表,选择「设计视图」
  • 找到BusinessID字段,将字段类型修改为「自动编号」,并设置为该表的主键
  • 保存表结构修改后,原有代码不需要改动即可正常运行

内容的提问来源于stack exchange,提问作者Brendan Truong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:24:02