在Visual Studio Designer中,我创建了一个包含2个DataTable的DataSet; EmployeeDT
和PayrollSheetDT
通过SELECT语句从SQL Server提取数据。这两个DataTable通过SSN
列具有关系。
相关的SQL Server数据库结构:
Employee
,列:SSN
(主键),Driver
PayrollSheet
,列:SSN
(外键),PSDate
在我的PayrollSheet表单中,我有多个组合框,我绑定了DisplayMember
DataTable的DataSource,ValueMember
和EmployeeDT
。当我启动程序时,我成功地单击“驱动程序”组合框中的向下箭头,选择驱动程序名称,并让其他组合框显示来自该驱动程序/ SQL记录的信息 - 因为它们绑定到同一个数据源。 / p>
我在组合框旁边还有一个列表框,目的是在组合框中选择PSDate
显示SSN
。
列表框是我的问题。我需要能够更改任何组合框中的值,并在列表框中显示PSDate。我不知道是否可以这样做,因为PayrollSheetDT
DataTable执行静态SQL查询,但我想要的是等同于添加WHERE SSN = <selected ssn in other datatable>
我对如何执行此操作并不了解,但如果我尝试填充TableAdapter
,则会收到以下错误:
一行或多行包含违反非空,唯一或外键约束的值。
感谢您的帮助
答案 0 :(得分:1)
这些事情非常挑剔。
这个错误可能意味着一些事情。尝试(暂时)删除PayrollSheet表,只填充Employee表。
确保您的列名与sql查询匹配,例如列名称的短字/短语是完全匹配。 EmployeeLastName与EmployeeLName不同。
确保没有“额外”的PayrollSheet行没有父行(回到Employee),也就是PayrollSheet中的孤立行。
这是一个通用助手。尝试填充DataSet对象(只是“DataSet”,而不是强类型对象)...然后执行ds.WriteXml(@“C:\ myds.xml”)然后浏览该xml并确保该列名字匹配。
另外..检查数据类型。检查列(在ds定义中)是否未标记为“not null”,然后查询返回某行的空值。这是一种嘀嗒问题,我很确定。
100x中的99x,当我遇到这个问题时,它是一个微小的东西,让我感到困惑。