我正在加載父記錄的子集和子記錄到數據集,然後設置datarelations和foreignkeyconstraints,所以當我構建dataadapter select stmt for孩子記錄,我必須確保只加載父母在場的孩子記錄,以避免參考完整性錯誤。由於ParentTable的子集已加載到數據集中,所以我試過:加載數據集其中dataadapter select命令使用IN子句與子查詢
daChild = new OleDBDataAdapter(CreateOledbCommand(「select * from Childtable where ChildKey in(ds.tables(」「ParentTable」「))」,dconn) )
但是得到了一個「未定義的函數'ds.tables'表達式」運行時錯誤。
所以,我試圖創建一個列表傳遞給IN子句,像這樣:
昏暗名爲myDataView作爲數據視圖=新數據視圖(ds.tables( 「ParentTable」))
昏暗MyTempParentTable如數據表= MyDataView.ToTable(假, 「ParentKey」)
daChild =新OleDbDataAdapter的(CreateOledbCommand( 「SELECT * FROM ChildTable其中ChildKey在(MyTempParentTable)」,dconn))
我在調試器中檢查和MyTempParentT實際上,它是一個包含ParentTable關鍵字的列表。我認爲IN子句可以將一列數據作爲有效輸入。顯然不是,因爲我在運行時出現「沒有給出一個或多個必需參數的值」錯誤。
我只是出於想法。我所有的谷歌搜索的IN子句都是IN(value1,value2,value3 ...),並且沒有給出包含更復雜表達式的IN子句的任何示例。 任何人都可以告訴我我錯過了什麼,或者可能有不同的方式來實現這一目標?我試圖讓IN子句工作,因爲我認爲這是最有效的方法來做到這一點...也許它不是......感謝您的任何幫助。