首页 文章

更新ADO Recordset中的字段并在Classic ASP中重新排序值

提问于
浏览
0

以下是目前的情况:我有一套产品记录 . 这些产品的价格取决于页面上其他地方的其他信息 . 因此,当我遍历记录集进行输出时,我使用函数计算价格并显示它 . 这一切都很有效 .

现在,为了新的皱纹 . 我需要能够在显示之前按计算的价格对产品进行排序 . 我的尝试是简单地向记录集添加一个新字段,循环记录集一次以计算价格并更新该新字段,然后在再次循环显示之前求助该字段上的记录集 .

不用说,这不起作用 . 无论我在这个记录集上放置了什么设置(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"

2 回答

  • 0

    实现此目的的一种方法是在数据库中使用computed column .

    主要好处是您不需要更改页面 . 此外,您可以在应用程序的其他位置重复使用计算出的价格 - 我猜您实际上是在网站的其他部分再次计算价格 .

  • 0

    如果此记录集不是很大,一个解决方案是在循环期间,将计算出的价格存储到数组中 . 计算出定价后,可以使用排序功能对数组进行排序,然后打印出结果 .

相关问题