2014-02-21 156 views
1
使用SqlTableAdapter填充數據集

我目前正在嘗試根據特定的ID號填寫表格加載的表格填充。根據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語句填充表適配器,但我希望用戶能夠瀏覽記錄使用綁定導航

+2

可以放置一些代碼。 – Shell

+0

發佈一些相關的代碼,顯示你到目前爲止已經嘗試了什麼,然後我們可以嘗試修復必要的部分,以獲得ID = 1的記錄。 – har07

+0

@ har07我已經提供了我在這個問題中嘗試過的內容;你能告訴我我做錯了什麼嗎? –

回答

0

最後一個問題是由於您的DataSet上設置的約束。也許你有列不接受空值或違反唯一鍵。無論哪種方式,您必須刪除錯誤約束,更改您的服務器查詢以便它與您的模式相匹配或通過將EnforceConstraints設置爲False來關閉約束條件。通常,當引發此錯誤時,您也會發生錯誤行他們的RowError屬性指示什麼約束導致問題。

至於你之前的問題,它是由你的服務器結果集與DataTable模式所期望的不同所引起的。例如,如果您有一個String列,其名稱與int服務器列匹配,則會引發此錯誤。

0

引用您的錯誤,請確保您使用的是查詢編輯器,以便您可以在所選列中獲得一個可視化對象。

對於參數加載表單

更換

where ID = 1 

where ID = ? 

這將創建一個在你的表適配器@參數1語句。

然後填入參數例如nPID

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