创建一个View(查看)/Query(查询)/Stored Procedure(存储过程)
你可以通过使用Access 97/2000或者SQL Server来实现这个创作。在本例子中我使用SQL Server,所以它的语法,比如字符串的连接有点不用(SQL使用的是“+”号,而Access使用的是“&”号)。这里有一个我在SQL 7使用查询网格创建查看,它跟Acces很相似。在工具栏上按下SQL按钮可以查看产生的SQL代码。基本的SQL代码是SELECT SkillID, Lookup FROM Skills。在我需要实际区域数值的地方,我必须用单一的引用来关闭字符串,然后使用“+”号来联机字符串到区域数值,再用另外一个“+”和一个新的单一引用来连接下一个字符串。你需要特别注意,再连接整个字符串的时候你需要空格和单一或者双引用标志。它可以有一些麻烦和错误,但是一旦它建立好后,它就会有巨大的魔力使得你一定要引用它。
现在我要做的事情是运行查询Skill 表格以得到两个区域数值、SkillID和Lookup(检查)描述。为了那个查询我将增加文本字符串,这个字符串包含了我需要的ASP代码。一旦你开始增加字符串,网格就不再显示单一区域,所以增加了AS Expr1 语句。
SELECT '< % IF (rsSearch.Fields.Item("' + SkillID + '").Value) = "True" THEN Response.Write "< li > ' + Lookup + ' < /li >" END IF % >' AS Expr1
FROM Skills
当你运行查询或者查看,你能在结果的网格中看到什么?在Access中你看到的就是你得到的,而在SQL Server中要拷贝查询行增加额外的双引用,所以当你拷贝它的时候你所得到的就在末尾。代码如下:
"< % IF (rsSearch.Fields.Item(""M1"").Value) = ""True"" THEN Response.Write ""< li > CPR < /li >"" END IF % >"
一个快速搜索和替代将剔除双引用而留给你完美的代码,将这些代码粘贴到你的网页上去:
< % IF (rsSearch.Fields.Item("M1").Value) = "True" THEN Response.Write "< li > CPR < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M2").Value) = "True" THEN Response.Write "< li > Wilderness First Aid (WFA) < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M3").Value) = "True" THEN Response.Write "< li > Wilderness Advanced First Aid (WAFA) < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M4").Value) = "True" THEN Response.Write "< li > Wilderness First Responder (WFR) < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M5").Value) = "True" THEN Response.Write "< li > First Responder < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M6").Value) = "True" THEN Response.Write "< li > EMT < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M7").Value) = "True" THEN Response.Write "< li > Wilderness EMT < /li >" END IF % >
< % IF (rsSearch.Fields.Item("M8").Value) = "True" THEN Response.Write "< li > Paramedic < /li >" END IF % >
接下来我解释一个上面这些代码。因为在两个表格之间并不存在真正的关系,所以没有一种直接连接Skills表格和Resumes表格的方法。RsSearch 记录集是UD记录集,它基于用户搜索条件调用Resume表格。可以使用SkillID主键数值M1,它与Resume表格相应区域有着相同的名字,所以我可以从Skills查询创建ASP检查语句。
实际的ASP代码只是简单计算Resume 区域的M1数值是否等于True。如果是的话,它在无序的列表种写下描述。它花费了我一些时间,但是想到要键入、传递和编辑所有70个ASP语句,然后来找出哪儿我已经键错了,这些时间还是值得的。同时,如果我增加新的Skills到Skills表格以及相应的区域给Resume表格,所有我要做的事情是再次运行查询将将它剪切并粘贴到新的数值。很明显地,你不会用这种方法来写整个网页,但是一旦你有许多重复地代码将要分布数据库数值的时候,这种方法将给你节省很多的时间。
另外一个快速的例子可以使用下面的存储过程。这是另外一种检查,但是在本例子中我想让数据库以正确的顺序来产生ASP代码 。因为SQL不支持ORDER BY语句,所以我编写编写以下的存储过程:
Alter Procedure spASPPopulation
As
set nocount on
SELECT '< % IF (rsSearch.Fields.Item("' + PopID + '").Value) = "True" THEN Response.Write "< li > '+ PopulationType + ' < /li >" END IF % >' AS Expr1
FROM Population
ORDER BY PopulationType
return
你可以使用相同的方法来在你需要的地方创建重复的ASP代码来连接你的数据库。举个例子,比如你需要在一个网页上定义70个变量,你只需要创建一个字符串,它合并了你的Dim语句以及数据库区域名字和数字,然后你只需要剪切并且粘贴它。
|