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