我目前正在尝试根据特定的ID编号填写表格加载表格。
已提供的代码行使用表中的所有记录填充表适配器。
但是,我只想要记录where ID = 1
我正在使用VB 2012和SQL Server
有人可以解释一下我是怎么做的吗?
原始代码行是:
Me._6OrdersTableAdapter.Fill(Me.Online_Portal_Solutions_DatabaseDataSet._6Orders)
当我尝试向数据集设计器中的表添加新查询时,我收到以下警告消息:(不太确定它的含义:
“新命令文本返回的模式与主查询的模式不同。如果不需要,请检查查询的命令文本。”
我添加的查询如下:
SELECT OrderNoID, CustomerID, CollectionDate, DeliveryDate
, ServiceType, PostalZone, DeliveryAddress, Product
, HazardType, Weight, NoOfPallets, OtherNotes
FROM [6Orders]
WHERE (HaulierID = 1)
我调用了查询fillhaulierjkp并更改了原始代码行,如下所示:
Me._6OrdersTableAdapter.fillhaulierjkp(Me.Online_Portal_Solutions_DatabaseDataSet._6Orders)
然后当我运行应用程序时,我在页面加载时出现此错误:
“无法启用约束。一行或多行包含违反非空,唯一或外键约束的值。”
我只想用select语句填充表适配器,但我希望用户能够使用绑定导航器浏览记录
答案 0 :(得分:0)
最后一个问题是由DataSet
上设置的约束造成的。也许您的列不接受空值或违反唯一键。无论哪种方式,您都必须删除错误约束,更改服务器查询以使其与您的架构匹配,或者通过将EnforceConstraints
设置为False
来关闭约束。通常,当抛出此错误时,您还会有错误行,其RowError
属性指示导致问题的约束。
至于您以前的问题,它是由您的服务器结果集与DataTable
架构所期望的不同引起的。例如,如果您的名称与String
服务器列匹配的int
列,则会抛出此错误。
答案 1 :(得分:0)
引用您的错误,请确保您使用的是查询编辑器,以便您可以直观地看到所选列。
用于加载表单的参数
替换
where ID = 1
与
where ID = ?
这将在表适配器中创建一个@ parameter1语句。
然后填写参数,例如NPID
Me.TA1.Fill(Me.DsClients.tblClients_Dems, nPID)