UniqueTable 屬性

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

指定在下列情況下可以更新的表:

?Microsoft Access 項(xiàng)目 (.adp) 中,窗體數(shù)據(jù)訪問頁與多個表視圖存儲過程綁定。
?Microsoft Access 項(xiàng)目 (.adp) 或 Microsoft Access 數(shù)據(jù)庫 (.mdb) 中,數(shù)據(jù)訪問頁與多個表查詢綁定。

String 型,可讀寫。

expression.UniqueTable

expression     必需。返回 Form 對象的表達(dá)式。

說明

UniqueTable 屬性是字符串表達(dá)式,表示可以更新的唯一表。

可以使用屬性表Visual Basic 來設(shè)置該屬性。

UniqueTable 屬性標(biāo)識了聯(lián)接的“多”表。如果沒有設(shè)置 UniqueTable 屬性,則與視圖、包含聯(lián)接的存儲過程或 SQL 字符串綁定的窗體是只讀的。同時,對于聯(lián)接,由 View.Open 或 StoredProc.Run 產(chǎn)生的數(shù)據(jù)表是只讀的(因?yàn)闊o法設(shè)置 UniqueTable 屬性)。只要設(shè)置了 UniqueTable 屬性,則只有該表中的字段是可更新的,只能對該表進(jìn)行插入和刪除。

為了使記錄集成為可更新的快照,以聯(lián)接光標(biāo)為基礎(chǔ)的窗體或數(shù)據(jù)訪問頁必須有 UniqueTable 屬性字符串。唯一表是基礎(chǔ)查詢中的表,其中的行與光標(biāo)的行之間是一一對應(yīng)的關(guān)系。在簡單的“病人-醫(yī)生”聯(lián)接中,“病人”是唯一表,因?yàn)楣鈽?biāo)的每一行都和“病人”表的一行對應(yīng)。注意“多對多”聯(lián)接沒有有效的 UniqueTable 屬性,因此該屬性是只讀的。對于數(shù)據(jù)訪問頁,UniqueTable 屬性將表示為 RecordsetDef 對象。UniqueTable 屬性的目的在于:

實(shí)施正確的可更新性語義:

?“唯一表”的鍵列必須位于形成光標(biāo)的查詢的選擇列表中,甚至對 SQL Server 也是如此。(有關(guān)其他數(shù)據(jù)源,請參閱 ResyncCommand 屬性主題中的“說明”部分。)

?在聯(lián)接光標(biāo)中刪除一行,只是從“唯一表”中刪除了一行。

 

?只對“唯一表”允許在聯(lián)接光標(biāo)中插入一行。

 

?只對“唯一表”中的字段允許在聯(lián)接光標(biāo)更新一行。

為“重新同步查詢”提供正確的參數(shù)值。窗體或 RecordsetDef 的 UniqueTable 屬性支持 catalog.owner.tablename 標(biāo)記,需要時可以完全限制基礎(chǔ)表,該表來自同一光標(biāo)的其他表。例如,如果 dbo.authors 和光標(biāo)中的 user1.authors 相聯(lián)接,則需要將 UniqueTable 屬性指定為 dbo.authors 或 user1.authors。

對于聯(lián)接光標(biāo),如果 UniqueTable 屬性為空,則記錄集還原為只讀,并且任何編輯嘗試都會導(dǎo)致發(fā)出嘀聲和顯示狀態(tài)消息:“因?yàn)闆]有設(shè)置 UniqueTable 屬性,該記錄集無法更新”。如果有一個非空的 UniqueTable 屬性,就要設(shè)置基礎(chǔ)記錄集或行集的 UniqueTable 屬性(必要時還要設(shè)置 UniqueSchema 屬性、UniqueCatalog 屬性)。然后,進(jìn)行檢查并把每個與 UniqueTable 屬性不匹配的列標(biāo)記為只讀。

在插入和更新操作中,只有“唯一表”中的字段才可以編輯。當(dāng)用戶試圖向其中輸入數(shù)據(jù)時,會發(fā)出嘀聲和“只有‘唯一表’中的字段才可以編輯?!钡南ⅰH绻?UniqueTable 屬性的設(shè)置不正確,則對于所有的列都會發(fā)生這種情況。