Asp classic 在ADO记录集中更新字段并在经典ASP中重新排序值

Asp classic 在ADO记录集中更新字段并在经典ASP中重新排序值,asp-classic,ado,recordset,Asp Classic,Ado,Recordset,现在的情况是:我有一套产品记录。这些产品的价格取决于页面其他地方的其他信息。因此,当我循环通过记录集进行输出时,我使用一个函数计算价格,并显示它。这一切都非常有效 现在,为新的皱纹。我需要能够在显示产品之前,按照计算出的价格对产品进行排序。我的尝试是简单地向记录集中添加一个新字段,在记录集中循环一次以计算价格并更新该新字段,然后在再次循环显示之前使用该字段上的记录集 不用说,这是行不通的。无论我对此记录集进行了什么设置(lockType、cursorType、cursorLocation),都会

现在的情况是:我有一套产品记录。这些产品的价格取决于页面其他地方的其他信息。因此,当我循环通过记录集进行输出时,我使用一个函数计算价格,并显示它。这一切都非常有效

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

不用说,这是行不通的。无论我对此记录集进行了什么设置(lockType、cursorType、cursorLocation),都会出现一个错误,说明“当前记录集不支持更新。这可能是提供程序或所选lockType的限制。”

有没有办法使这项工作如所述,或有其他方法来实现这一结果?以下是我目前正在使用的代码片段,仅供参考

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"

实现这一点的一种方法是在数据库中添加一个


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

如果此记录集不大,一个解决方案是在循环过程中,将计算出的价格存储到数组中。计算定价后,可以使用排序函数对数组排序,然后打印结果