Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ASP (http://www.flasher.ru/forum/forumdisplay.php?f=19)
-   -   Разбитие на страницы (http://www.flasher.ru/forum/showthread.php?t=26189)

Dmitry P. 23.01.2002 19:55

Разбитие на страницы
 
Привет!
Я работаю с ASP и MSSQL
Мне надо, чтобы кокда я делаю выборку из базы, на странице можно было вибирать количество записей на странице, ну там 10, 15, 50
Как это сделать?

Crazy 23.01.2002 20:07

Простейший способ:

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 )

Dmitry P. 23.01.2002 22:45

Но у меня 7000 строк в базе!
Представь сколько такая база будет грузиться по модему!!!
Каждая строка по 16 полей и запрос я делаю не по 1 параметру, а по 12!!!!!

Что мне нужно сделать в данном случае?

Сформировать отдельный запрос и по этому запрсу формировать ключевые поля?

http://monitor.kippk.kolomna.ru

рользователь: user
пароль: gjkmpjdfntkm (пользователь) - только латинскими как на примере!!!

evalex 24.01.2002 01:06

та же проблемма, а нормального решения так и не нашёл

Gossip 24.01.2002 10:50

Как я понял, тебе надо, например тут:
http://monitor.kippk.kolomna.ru/sele...cat_id.asp?id={18080A49-3180-41EE-B664-37EC424DB05C}
Выводить по 10,15,20 записей на страницу?

Dmitry P. 24.01.2002 11:10

Да! Да!

Если не трудно, то ответьте пожалуйста!!!

Или ссылочки по теме дайте!!!

Заранее спасибо!

Crazy 24.01.2002 11:30

Цитата:

Оригинал написал(а) Dmitry P.
Что мне нужно сделать в данном случае?

Медитировать над текстом моего предыдущего письма. Там все написано.

Gossip 24.01.2002 12:01

предлагаю на выбор два способа разбивать выборку постранично:

1. Используя RecordSet
2. Используя GetRows

Первый удобнее, но сервер грузит..
Второй работает быстрее, но нельзя обратится к полю по имени

evalex 24.01.2002 17:23

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...

Crazy 24.01.2002 17:32

Цитата:

Оригинал написал(а) evalex
2Crazy - ne nujno meditirovat' - eto ne samiy luchshiy sposob.
Никто и не просил лучший. Но он гарантированно работающий.

Цитата:


SELECT TOP intPagesToGet * FROM customers where (customerId BETWEEN lastID AND lastID+intPagesToGet)

Только в простейших случаях. Даже элементарное условие в where убивает эту идею напрочь.

Gossip 24.01.2002 19:59

Цитата:

Оригинал написал(а) evalex
GetRows i zatem brat' kuski arraya po chastyam? ne proboval... no somnevaus' chto budet bistree...
Быстрее и намного, чем .AbsolutePage

findman 30.01.2002 20:35

Dmitry P, используйте метод Move() и свойство RecordCount.
Это проще всего, хотя и будет тянуть все записи в рекордсет.
Собственно будет работать как и с AbsolutePage, только возни с кодом на мой взгляд меньше.

Написать попробуйте сами, там нет ничего сложного. Если найду у себя готовый пример, то кину. Писать его простите заново, лень.

Для того что бы спихнуть в рекордсет только записи на конкретной странице придется написать хранимую процедуру на SQL сервере с курсором внутри. Будет ли это работать быстрее возможно, но не на много.

Crazy 30.01.2002 22:31

Цитата:

Оригинал написал(а) findman
Будет ли это работать быстрее возможно, но не на много.
Это будет быстрее. И намного. Но только при прямых руках. :)


Часовой пояс GMT +4, время: 16:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.