根据ID#使用SqlTableAdapter填充数据集



我目前正试图根据某个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)

然后,当我运行应用程序时,当页面加载时,我会收到这个错误:

"无法启用约束。一行或多行包含违反非null、唯一或外键约束的值。">

我只想用select语句填充表适配器,但我希望用户能够使用绑定导航器浏览记录

最后一个问题是由于在DataSet上设置了约束。也许您的列不接受null值,或者违反了唯一键。无论哪种方式,都必须删除错误的约束,更改服务器查询以使其与架构匹配,或者通过将EnforceConstraints设置为False来关闭约束。通常情况下,当抛出此错误时,还会出现具有RowError属性的错误行,该属性指示导致问题的约束。

至于您以前的问题,这是由于您的服务器结果集与DataTable模式所期望的不同而导致的。例如,如果有一个String列的名称与int服务器列匹配,则会引发此错误。

关于您的错误,请确保您使用的是查询编辑器,这样您就可以看到所选列。

用于加载表单的参数

更换

where ID = 1

带有

where ID = ?

这将在表适配器中创建@parameter1语句。

然后填充参数,例如nPID

Me.TA1.Fill(Me.DsClients.tblClients_Dems, nPID)

最新更新