我正在编写一个使用SQL查询从数据集调用列的代码。我使用两个参数来标识要选择的行。一个是ProductSerialNumber,另一个是datetimestamp。请参阅下面的SQL查询
Select TestStation FROM tblData
WHERE ProductSerialNumber = ? AND Datetimestamp = ?
在数据集的数据表中,productserialnumber被格式化为文本,另一个被格式化为日期(正如您所期望的那样)。
在我的vb.net代码中,我从另一个源获取Datetimestamp(不要问为什么,你唯一需要知道的是它抓取一个有效的datetimestamp,标注为日期,与tblData完全匹配)我使用预制查询来生成数据表。该查询是名为“TestStationLookUp”的填充查询
我的vb.net代码看起来像这样
Dim dt as new dataset.tbldataDataTable
Dim dta As New DataSetTableAdapters.tbldataTableAdapter
Dim ProductSerialNumber as string = "XXXXXX"
Dim DateTimeStamp as date = SomeDateVariable
dta.TestStationLookUp(dt, ProductSerialNumber, DateTimeStamp)
这里代码告诉我:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
Line 7366: dataTable.Clear
Line 7367: End If
Error: Line 7368: Dim returnValue As Integer = Me.Adapter.Fill(dataTable)
Line 7369: Return returnValue
Line 7370: End Function
我无法理解为什么会出现这种错误,因为一切都按照应有的方式确定。这个确切的代码设置在我的代码中的其他地方工作(除了它没有使用日期),但是这个特定的部分不起作用。
另外,如果我在我的解决方案中转到数据集,我可以在此查询中使用“预览数据”并输入EXACT相同的参数(与表中的记录匹配的ProductSerialNumber和DateTimeStamp以及我在我的vb代码)它会让我生成我想要的表。
有人可以帮忙吗?
答案 0 :(得分:1)
此错误表示您尝试访问无效的唯一ID“ProductSerialNumber”,可能它不存在
无法启用约束。一行或多行包含值 违反非空,唯一或外键约束。
不是传递来自数据集的变量,而是传递一个您确定它存在于数据库中的有效数字