![]() |
Разбитие на страницы
Привет!
Я работаю с ASP и MSSQL Мне надо, чтобы кокда я делаю выборку из базы, на странице можно было вибирать количество записей на странице, ну там 10, 15, 50 Как это сделать? |
Простейший способ:
1. Строишь выборку, которая возвращает только первичные ключи . Загружаешь ее целиком. 2. Находишь в списке ключей нужный кусок из N записей и выполняешь запрос, который извлекает эти N записей по явно заданным первичным ключам. Типа такого: 1. select customerID from customers where city="Moscow" 2. select * from customers where customerID in (103423, 2342, 2343, 6456, 2645, 3554 ) |
Но у меня 7000 строк в базе!
Представь сколько такая база будет грузиться по модему!!! Каждая строка по 16 полей и запрос я делаю не по 1 параметру, а по 12!!!!! Что мне нужно сделать в данном случае? Сформировать отдельный запрос и по этому запрсу формировать ключевые поля? http://monitor.kippk.kolomna.ru рользователь: user пароль: gjkmpjdfntkm (пользователь) - только латинскими как на примере!!! |
та же проблемма, а нормального решения так и не нашёл
|
Как я понял, тебе надо, например тут:
http://monitor.kippk.kolomna.ru/sele...cat_id.asp?id={18080A49-3180-41EE-B664-37EC424DB05C} Выводить по 10,15,20 записей на страницу? |
Да! Да!
Если не трудно, то ответьте пожалуйста!!! Или ссылочки по теме дайте!!! Заранее спасибо! |
Цитата:
|
предлагаю на выбор два способа разбивать выборку постранично:
1. Используя RecordSet 2. Используя GetRows Первый удобнее, но сервер грузит.. Второй работает быстрее, но нельзя обратится к полю по имени |
2Crazy - ne nujno meditirovat' - eto ne samiy luchshiy sposob.
Da ya mogu dobavit' pervichniy kluchik(etche i sdlat' ego uporyadochenim po odnomu) i zatem igrat'sya s zapsosami tipa: SELECT TOP intPagesToGet * FROM customers where (customerId BETWEEN lastID AND lastID+intPagesToGet) no ne vsegda mozhno kluchi dobavlyat'...(db u menya chuzhaya ne mogu ya ee menyat') Ispol'zuya RecordSet? v smisle .AbsolutePage??? - performance suicide GetRows i zatem brat' kuski arraya po chastyam? ne proboval... no somnevaus' chto budet bistree... |
Цитата:
Цитата:
|
Цитата:
|
Dmitry P, используйте метод Move() и свойство RecordCount.
Это проще всего, хотя и будет тянуть все записи в рекордсет. Собственно будет работать как и с AbsolutePage, только возни с кодом на мой взгляд меньше. Написать попробуйте сами, там нет ничего сложного. Если найду у себя готовый пример, то кину. Писать его простите заново, лень. Для того что бы спихнуть в рекордсет только записи на конкретной странице придется написать хранимую процедуру на SQL сервере с курсором внутри. Будет ли это работать быстрее возможно, но не на много. |
Цитата:
|
| Часовой пояс GMT +4, время: 16:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.