当前位置:学学看123知识中心电脑教学数据库教程使用 SQL pass-through» 正文

使用 SQL pass-through

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

导读:If Len(lcSQL) > 0 * 添加 Update,去掉最后一个逗号, * 添加一个 Where 子句 lcSQL = "Update member Set " + ; Left(lcSQL, Len(lcSQL) - 2) + ; "Where member_no = " + ; AllTrim(ThisForm.txtMemberID.Value) If SQLExec(ThisForm.nHandle, lcSQL) < 0<略去的代码>然后对 Adult 进行与上面相同的处理。接着要做的是我们非常熟悉的事。如果一切正常提交事务处理否则回滚。删除一个成员使用 SQL pass-through 相对于远程视图的一个优点是,你增加了对发生什么和何时发生的控制。当用户单击 Delete 按钮时运行的代码就是一个好的例子。有很多理由可能使你不能删除一个成员。如果成员有相关的 juveniles 或成员有未结清的借书时任何 Delete

使用 SQL pass-through,标签:sql数据库教程,access数据库教程,http://www.xxk123.com
If Len(lcSQL) > 0
  * 添加 Update,去掉最后一个逗号,
  * 添加一个 Where 子句
  lcSQL = "Update member Set " + ;
          Left(lcSQL, Len(lcSQL) - 2) + ;
          "Where member_no = " + ;
          AllTrim(ThisForm.txtMemberID.Value)
  If SQLExec(ThisForm.nHandle, lcSQL) < 0
<略去的代码>

然后对 Adult 进行与上面相同的处理。接着要做的是我们非常熟悉的事。如果一切正常提交事务处理否则回滚。

删除一个成员

使用 SQL pass-through 相对于远程视图的一个优点是,你增加了对发生什么和何时发生的控制。当用户单击 Delete 按钮时运行的代码就是一个好的例子。
有很多理由可能使你不能删除一个成员。如果成员有相关的 juveniles 或成员有未结清的借书时任何 Delete 都会失败。可以很容易地通过发送一个 Select 到服务器来检查这一点。这里的代码使用 SQLExec() 来检查这两个条件。如果两者都为真,会显示一个友好的信息且不会进一步发生什么情况。
* 首先检查是否有一个活动的 juveniles
lcSQL = "Select member_no From juvenile " + ;
        "Where adult_member_no = " + ;
        ThisForm.txtMemberID.Value
If SQLExec(ThisForm.nHandle, lcSQL) < 0
  ThisForm.ShowError
  Return
Else
  If RecCount("sqlresult") <> 0  
    lcMessage = "该成员不能删除. " + ;
                "他是一个活动的少年的成年。"
    = MessageBox(lcMessage, MB_ICONINFORMATION)
    Return
  Endif  
Endif

* 现在检查成员还有活动的借书
lcSQL = "Select member_no From loan " + ;
        "Where member_no = " + ;
        ThisForm.txtMemberID.Value
If SQLExec(ThisForm.nHandle, lcSQL) < 0
  ThisForm.ShowError
  Return
Else
  If RecCount("sqlresult") <> 0  
    lcMessage = "该成员不能删除。" + ;
                "他还有活动的借书。"
    = MessageBox(lcMessage, MB_ICONINFORMATION)
    Return
  Endif  
Endif

如果还需要执行额外的检查,代码可以放在以上代码的后面。你可以完全控制要检查的内容和顺序。如果所有的检查都成功且成员可以删除,则开始一个事务处理。
在 Member 表和 Loanhist 及 Reservation 表单定义了关系。每一次借书和还书都在 Loanhist 表中有一条记录。成员预约的每一本书在 Reservation 表中有一条记录。如果成员被删除,需要删除这两个表中的相关信息。需要首先删除它们,否则会违犯参照完整性。
* 删除该成员的借书情况(loan history)记录
lcSQL = "Delete loanhist Where member_no = " + ;
        AllTrim(ThisForm.txtMemberID.Value)
If SQLExec(ThisForm.nHandle, lcSQL) < 0
<略去的代码>

* 删除该成员的借书预约(loan reservation)记录
lcSQL = "Delete reservation Where member_no = " + ;
        AllTrim(ThisForm.txtMemberID.Value)
If SQLExec(ThisForm.nHandle, lcSQL) < 0

上一页  [1] [2] [3] [4] [5]  下一页


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10