全部显示

UniqueTable 属性

       

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

String 型,可读写。

expression.UniqueTable

expression   必需。返回 Form 对象的表达式。

说明

UniqueTable 属性是字符串表达式,表示可以更新的唯一表。

可以使用属性表Visual Basic 来设置该属性。

UniqueTable 属性标识了联接的“多”表。如果没有设置 UniqueTable 属性,则与视图、包含联接的存储过程或 SQL 字符串绑定的窗体是只读的。同时,对于联接,由 View.Open 或 StoredProc.Run 产生的数据表是只读的(因为无法设置 UniqueTable 属性)。只要设置了 UniqueTable 属性,则只有该表中的字段是可更新的,只能对该表进行插入和删除。

为了使记录集成为可更新的快照,以联接光标为基础的窗体或数据访问页必须有 UniqueTable 属性字符串。唯一表是基础查询中的表,其中的行与光标的行之间是一一对应的关系。在简单的“病人-医生”联接中,“病人”是唯一表,因为光标的每一行都和“病人”表的一行对应。注意“多对多”联接没有有效的 UniqueTable 属性,因此该属性是只读的。对于数据访问页,UniqueTable 属性将表示为 RecordsetDef 对象。UniqueTable 属性的目的在于:

实施正确的可更新性语义:

为“重新同步查询”提供正确的参数值。窗体或 RecordsetDef 的 UniqueTable 属性支持 catalog.owner.tablename 标记,需要时可以完全限制基础表,该表来自同一光标的其他表。例如,如果 dbo.authors 和光标中的 user1.authors 相联接,则需要将 UniqueTable 属性指定为 dbo.authors 或 user1.authors。

对于联接光标,如果 UniqueTable 属性为空,则记录集还原为只读,并且任何编辑尝试都会导致发出嘀声和显示状态消息:“因为没有设置 UniqueTable 属性,该记录集无法更新”。如果有一个非空的 UniqueTable 属性,就要设置基础记录集或行集的 UniqueTable 属性(必要时还要设置 UniqueSchema 属性、UniqueCatalog 属性)。然后,进行检查并把每个与 UniqueTable 属性不匹配的列标记为只读。

在插入和更新操作中,只有“唯一表”中的字段才可以编辑。当用户试图向其中输入数据时,会发出嘀声和“只有‘唯一表’中的字段才可以编辑。”的消息。如果 UniqueTable 属性的设置不正确,则对于所有的列都会发生这种情况。