c#帮助用外键填充数据表
本文关键字:填充 数据表 帮助 | 更新日期: 2023-09-27 18:03:20
在Visual Studio设计器中,我创建了一个有2个数据表的数据集;EmployeeDT
和PayrollSheetDT
通过SELECT语句从SQL Server中提取数据。这两个datatable通过SSN
列有关系。
相关SQL Server数据库结构:
- 表:
Employee
,列:SSN
(主键),Driver
表:
PayrollSheet
,列:SSN
(外键),PSDate
在我的PayrollSheet表单中,我有多个组合框,其中我绑定了EmployeeDT
数据表的数据源、DisplayMember
和ValueMember
。当我启动程序时,我成功地单击"驱动程序"组合框中的向下箭头,选择驱动程序名称,并让其他组合框显示来自该驱动程序/SQL记录的信息-因为它们绑定到相同的数据源。
我在组合框旁边也有一个列表框,目的是显示在组合框中选择的任何SSN
的PSDate
。
列表框是我的问题。我需要能够在任何组合框中更改值,并在列表框中显示PSDate。我不知道这是否可以做到,因为PayrollSheetDT
数据表执行静态SQL查询,但我想要的是相当于添加一个WHERE SSN = <selected ssn in other datatable>
我对如何做到这一点没有很好的理解,但如果我尝试填充TableAdapter
,我得到以下错误:
一行或多行包含违反非空、唯一或外键约束的值。
谢谢你的帮助
这些东西都很讲究。
这个错误可能意味着一些事情。尝试(暂时)删除PayrollSheet表,只填充Employee表。
确保列名与sql查询匹配,例如列名的短单词/短语是精确匹配的。EmployeeLastName和EmployeeLName不一样
确保没有"额外的"PayrollSheet行没有父行(返回到Employee),也就是PayrollSheet中的孤儿行。
这是一个通用的帮助器。尝试填充一个数据集对象(只是"数据集",不是强类型的)…然后执行ds.WriteXml(@"C:'myds.xml"),然后遍历该xml并确保列名匹配。
也. .检查数据类型。检查列(在ds定义中)是否未标记为"非空",然后查询为某些行返回空值。我敢肯定,这是某种tick - tack的问题。