以下是目前的情况:我有一套记录产品。这些产品的价格取决于页面上其他地方的其他信息。因此,当我遍历记录集进行输出时,我使用函数计算价格并显示它。这一切都很有效。
现在,为了新的皱纹。我需要能够在显示之前按计算的价格对产品进行排序。我的尝试是简单地向记录集添加一个新字段,循环记录集一次以计算价格并更新该新字段,然后在再次循环显示之前求助该字段上的记录集。
毋庸置疑,这不起作用。无论我在这个记录集上放置了什么设置(lockType,cursorType,cursorLocation),我都会收到一条错误,指出“当前Recordset不支持更新。这可能是提供者或所选锁定类型的限制。”
有没有办法按照描述进行此项工作,还是有其他方法可以完成此结果?作为参考,这是我目前正在使用的代码片段。
set rsProd = server.CreateObject("adodb.recordset")
rsProd.cursorType = adOpenKeyset
rsProd.lockType = adLockPessimistic
rsProd.cursorLocation = adUseServer
rsProd.Open sql, Conn1
'loop through the records and calculate prices'
Do until rsProd.EOF
laPrices = Split(GetParameterProductPrice(rsProd("Product_ID")), "|")
'ERROR OCCURS ON NEXT LINE'
rsProd("Sale") = CDbl(laPrices(0))
rsProd("Sale_Special")= CDbl(laPrices(1))
rsProd.MoveNext
Loop
rsProd.MoveFirst
rsProd.Sort = "Sale_Special, Sale, Product_Code"
答案 0 :(得分:0)
实现此目的的一种方法是在数据库中使用computed column。
主要好处是您不需要更改页面。此外,您可以在应用程序的其他位置重复使用计算出的价格 - 我猜您实际上是在网站的其他部分再次计算价格。
答案 1 :(得分:0)
如果此记录集不是很大,一个解决方案是在循环期间,将计算出的价格存储到数组中。一旦计算出定价,就可以使用排序功能对数组进行排序,然后打印出结果。