Обновить поле в ADO Recordset и пересортировать значения в Classic ASP - PullRequest
0 голосов
/ 16 июня 2010

Вот текущая ситуация: у меня есть набор продуктов. Цена этих продуктов зависит от другой информации в другом месте на странице. Поэтому, просматривая набор записей для вывода, я вычисляю цену с помощью функции и отображаю ее. Все это прекрасно работает.

Теперь для новой морщины. Мне нужно уметь сортировать товары по рассчитанной цене, прежде чем я их покажу. Моя попытка состояла в том, чтобы просто добавить новое поле в набор записей, один раз просмотреть набор записей, чтобы рассчитать цену и обновить это новое поле, а затем применить набор записей в этом поле, прежде чем снова выполнить цикл для отображения.

Излишне говорить, что это не работает. Независимо от того, какие настройки (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"

Ответы [ 2 ]

0 голосов
/ 08 июля 2010

Если этот набор записей невелик, одно из решений во время цикла - сохранить рассчитанную цену в массиве. После расчета цены вы можете отсортировать массив с помощью функции сортировки, а затем распечатать результаты.

0 голосов
/ 27 июня 2010

Один из способов сделать это - вычислить в вашей базе данных вычисляемый столбец .

Основным преимуществом будет то, что вам не нужно будет менять свои страницы.Кроме того, вы можете повторно использовать рассчитанную цену в других местах вашего приложения - я полагаю, что вы действительно рассчитываете цену снова в других частях сайта.

...