c#帮助用外键填充数据表

本文关键字:填充 数据表 帮助 | 更新日期: 2023-09-27 18:03:20

在Visual Studio设计器中,我创建了一个有2个数据表的数据集;EmployeeDTPayrollSheetDT通过SELECT语句从SQL Server中提取数据。这两个datatable通过SSN列有关系。

相关SQL Server数据库结构:

  • 表:Employee,列:SSN(主键),Driver
  • 表:PayrollSheet,列:SSN(外键),PSDate

在我的PayrollSheet表单中,我有多个组合框,其中我绑定了EmployeeDT数据表的数据源、DisplayMemberValueMember。当我启动程序时,我成功地单击"驱动程序"组合框中的向下箭头,选择驱动程序名称,并让其他组合框显示来自该驱动程序/SQL记录的信息-因为它们绑定到相同的数据源。

我在组合框旁边也有一个列表框,目的是显示在组合框中选择的任何SSNPSDate

列表框是我的问题。我需要能够在任何组合框中更改值,并在列表框中显示PSDate。我不知道这是否可以做到,因为PayrollSheetDT数据表执行静态SQL查询,但我想要的是相当于添加一个WHERE SSN = <selected ssn in other datatable>

我对如何做到这一点没有很好的理解,但如果我尝试填充TableAdapter,我得到以下错误:

一行或多行包含违反非空、唯一或外键约束的值。

谢谢你的帮助

c#帮助用外键填充数据表

这些东西都很讲究。

这个错误可能意味着一些事情。尝试(暂时)删除PayrollSheet表,只填充Employee表。

确保列名与sql查询匹配,例如列名的短单词/短语是精确匹配的。EmployeeLastName和EmployeeLName不一样

确保没有"额外的"PayrollSheet行没有父行(返回到Employee),也就是PayrollSheet中的孤儿行。

这是一个通用的帮助器。尝试填充一个数据集对象(只是"数据集",不是强类型的)…然后执行ds.WriteXml(@"C:'myds.xml"),然后遍历该xml并确保列名匹配。

也. .检查数据类型。检查列(在ds定义中)是否未标记为"非空",然后查询为某些行返回空值。我敢肯定,这是某种tick - tack的问题。

当我遇到这个问题时,它是一些很小很小的东西。