Ultradev专题使用数据库存储过程给子表格增加多个记录
时间:2007-12-23 来源:不详 作者:迈克DB
本教程是教程《使用存储过程来增加和显示新的记录》的延续。假如你还没有阅读这个教程,请先阅读完教程《使用存储过程来增加和显示新的记录》之后再阅读本教程。
对于许多应用程序,你想让用户能够增加新的记录。基本的Server Extensions(服务器扩展)答应你这样做,它是利用SQL_INSERT语句,但是它只能对于一个表格。在许多情况下,你可能需要同时插入数据到多个表格,这些表格有一个相同的ID区域进行连接。举个例子,Orders和OrderDetail插入就包含了一个在两个表格之间的父/子关系。在教程2中处理的是简单的例子,它只是增加一个新的父记录并且增加一个相应的子记录。但是怎样增加一个父记录和多个子记录呢?在本教程中将教你如何做。这里还是使用相同的工作应用程序,所以这里就不在重复叙述了。
本教程是一个你为什么应该使用存储过程的一个很好的例子。我可以改变我的应用程序允
许多行插入到子表格,具体做法基本上是通过改变存储过程的代码。我只有改变所有在教程2
中UltraDev产生的网页。通过在你的数据库中而不是在你的网页中压缩你的应用程序逻辑,你
可以节省许多设计开发的时间,并且网页应用程序会更加轻便。
织梦好,好织梦
下面的例子是用VBScript,并且在NT 4.0工作站、PWS(Personal Web Server,个人网页服务器)和 SQL 7.0.中创建的。另外你可能想改变光标以及锁定在你记录集中的设置。
增加Confirmation页面:AddConfirm.asp
这个页面在应用程序中做了所有的实际工作。调用这个网页插入新的记录到两个(或者更多)相关表格并且将新的JobID传递给两个附加的记录集以可以显示新增数据给用户。在这个网页上有几个记录集,它们同Request(请求)变量从AddJop.asp表单的信息转换成存储过程。如图1所示的数据绑定显示了所有的记录集和Request(请求)变量。
其中,commJobAdd示一个基于存储过程(commJobAdd)命令,它插入一个新的记录到Jobs表格中,并且从插入中提取新的JobID,再使用它同时插入子表JobCategory。这个命令同时返回了
JobID的数值给ASP页面。
织梦内容管理系统
RsJobSearch是一个记录集,它接收从commJobAdd传来的JobID并且将它作为参数再传递个一个存储过程(spJobSearch)以返回数据用于新插入的记录。
RsJobCategories也是一个记录集,它接收来自commJobAdd的一个JobID,并且将它作为参数并
传递给存储过程(spJobCategories)以返回那个JobID的分类。
命令存储过程
commAddJob存储过程需要你正确配置命令,参见图2。
(图片较大,请拉动滚动条观看)
当你在SQL 7中建立了初始的连接到存储过程,变量列表框将自动集中来自存储过程的@变量以及正确的数据类型。我们可以看到,绝大多数的变量被设置运行数值,它们被传递给存储过程。为了让命令正确运行,你需要根据在数据库表格中你是怎样配置区域的来为每一个数据类型设置大小。然后你需要增加适当的Request("fieldname")运行数值。值得提醒的是,我们标识了所有的从AddJob.asp表单的文本框和列表框,标识是用相同的名字作为存储过程变量的(负的@符号)。你可以看到所有的Request变量列表在图1中。
文章评论
共有位Admini5网友发表了评论 查看完整内容