2010-06-16 50 views
0

下面是当前的情况:我有一个记录集的产品。这些产品的价格取决于页面上其他信息。所以,当我循环输出记录集时,我使用函数计算价格并显示它。这一切都奇妙地起作用。ADO记录集中的更新字段和经典ASP中的重新排序值

现在,为新的皱纹。我需要能够按照计算的价格对产品进行分类,然后再展示它们。我试图简单地向记录集添加一个新字段,循环遍历记录集来计算价格并更新该新字段,然后在该字段上再次循环显示记录集。不用说,这是行不通的。不管我在该记录集上放置什么设置(lockType,cursorType,cursorLocation),我都会看到一个错误消息,指出“当前记录集不支持更新”,这可能是提供程序或选定锁定类型的限制。

有没有什么办法使这项工作如上所述,或者是否有其他方法来实现这一结果?作为参考,这里是我目前正在使用的代码片段。

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

完成此操作的一种方法是在数据库中使用computed column

主要好处是你不需要改变你的页面。另外,您可以在应用程序的其他地方重新使用计算的价格 - 我想您实际上是在网站的其他部分再次计算价格。

0

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