当前位置:学学看123知识中心电脑教学数据库教程使用视图 - 尝试一» 正文

使用视图 - 尝试一

[06-11 18:16:33]   来源:http://www.xxk123.com  数据库教程   阅读:8184

导读: 取决于当前成员是成年人或少年 ,vAdultMember 或 vJuvenileMember 视图被选定。然后发布一个 TableUpdate()。如果成功,数据被保存。否则向用户显示发生了什么问题。 注意因为使用了 TableUpdate(),它可以处理新添加的成员或对成员信息的修改。 删除一个成员 要删除后端上的一条记录只需在视图中删除它。以下是 Delete 按钮的 Click 事件代码: Select (ThisForm.cViewInUse)DeleteIf TableUpdate() = MessageBox("This member has been deleted.", ; MB_ICONINFORMATION) Append Blank……Else ThisForm.ShowError =TableRevert()Endif 在询问用户确认删除选定视图的记录后,记录从视图中删除并发布

使用视图 - 尝试一,标签:sql数据库教程,access数据库教程,http://www.xxk123.com

取决于当前成员是成年人或少年 ,vAdultMember 或 vJuvenileMember 视图被选定。然后发布一个 TableUpdate()。如果成功,数据被保存。否则向用户显示发生了什么问题。 注意因为使用了 TableUpdate(),它可以处理新添加的成员或对成员信息的修改。

删除一个成员

要删除后端上的一条记录只需在视图中删除它。以下是 Delete 按钮的 Click 事件代码:

Select (ThisForm.cViewInUse)DeleteIf TableUpdate()  = MessageBox("This member has been deleted.", ;               MB_ICONINFORMATION)  Append Blank……Else  ThisForm.ShowError  =TableRevert()Endif

在询问用户确认删除选定视图的记录后,记录从视图中删除并发布 TableUpdate() 。如果成功,记录从后端删除。否则,向用户显示错误原因。

问题

Visual FoxPro 不是奇妙的吗? 客户服务器是多么的容易,你可能会想? 该表单是非常简单和易于使用。但这里有三个问题。

不能添加新成员

要测试这些问题,单击 Add 按钮,添加一个新成员并单击 Save。很快你会看到如图2所示的信息。

图 2 添加成员时的错误信息

在按下 Add 按钮时,一个空记录添加到 vAdultMember 视图游标中。该视图由两个表组成,Adult 和 Member。在按下 Save 按钮时,Visual FoxPro 发送 name 信息到 Member 表。SQL Server 自动提供 member ID。因此很好。Visual FoxPro 也发送地址信息到 Adult 表。但关于成员的 ID,它没有发送任何东西。该字段保持为空,这是非法的并造成 TableUpdate() 失败。

要处理这一问题,新记录需要首先添加到 Member 表,并且结果 ID 需要根据地址信息放到 Adult 表。没有理由认为 Visual FoxPro 的视图知道这些。为什么会这样? Visual FoxPro 不知道是什么 ID ,且不知道在 Adult 表中发送它。

不能删除成员

在图书馆数据库中(SQL Server 版) 在 Adult 和 Juvenile 表及 Member 和 Loan 间有着参照完整性。如果一个成员负责有少年成员或她/他还有未还清的借书,你就不能删除他/她。你可以期望 SQL Server 拒绝该删除并发送加一个错误提示。

但是,如果一个成员没在相关少年和借书,你可以删除一个他/她。试着这样做你会看到一条如下图所示的错误信息。

图 3 删除成员时的错误信息

该错误,如果你理解 SQL Server 语言,它告诉你 Adult 和 Member 表间参照完整性冲突。这将会在试着在删除 Adult 记录前删除 Member 记录时发生。这明显的是发生在视图中。对于删除处理记录,必须首先删除 Adult 然后删除 Member。但是,Visual FoxPro 如何知道这些?

不可理解的错误信息

如果你想删除一个负责有少年的成员,你会被终止。如果你想删除一个借有图书的成员,你会被终止。但是,SQL Server 将发送回 Visual FoxPro 一个类似于图 3 的错误信息。这些信息对于用户来说是完全不能理解的。

考虑另一个示例。Adult 表具有以下约束检查定义:

ALTER TABLE adult  WITH NOCHECK  ADD CONSTRAINT phone_no_rule CHECK (phone_no LIKE     '(206)[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')

这些约束强制电话号码以 206 区号开始。如果插入或更新的记录的电话号码违反了这个规则,数据将被拒绝。但是,用户看到的怪异的提示信息如下图所示。

图 4 检查约束违反错误信息

上一页  [1] [2] 


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程
《使用视图 - 尝试一》相关文章

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10