Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SQL 400 000 записей, их скролинг. / 4 сообщений из 4, страница 1 из 1
16.09.2003, 11:47
    #32266161
Андрей GR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL 400 000 записей, их скролинг.
Народ, подскажите как средствами SQL показывать куски бд по 100 записей, когда юзер в DBGRID нажимает скроллинг вниз, пошла для показа следующая сотня.

Мне пришло в голову только такая идея:

select top 100 *
from t_pers
where ID_rec>*последняя запись предыдущего запроса*;



Ы ? :-)
...
Рейтинг: 0 / 0
16.09.2003, 12:18
    #32266214
CrazyMihey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL 400 000 записей, их скролинг.
Можно в Дазе Банных создать Stored Procedure , которой будет передаваться с какой и по какую записи возвращать. А в этой процедуре (на Сервере) в цикле For будут считаться записи и выводиться в результат только те, которые находятся внутри диапазона. При этом, набор записей (то есть запрос внутри Stored Procedure ) обязательно должен быть отсортированным. Для правильного отображения ScrollBar а придётся перед открытием считать общее количество записей и самому в Клиентской Программе вычислять положение и размеры ScrollBar а. Кроме того, придётся писать Stored Procedure для вставки, удаления и изменения набора данных. Немного геморойно, но когда пару раз сделаешь – самому понравится.
...
Рейтинг: 0 / 0
16.09.2003, 12:18
    #32266215
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL 400 000 записей, их скролинг.
Отношение к данному вопросу участников форума\r
\r
/topic/40630&pg=1
...
Рейтинг: 0 / 0
16.09.2003, 17:55
    #32266947
nomorenames
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL 400 000 записей, их скролинг.
В продолжение темы, которую обсасывали по ссылке выше:
Если уж хочется скролить все записи, для себя решил так (на SQL Server)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 -- create proc scroll_up
 
declare 
	@pos varchar( 10 ),
	@posmin varchar( 10 ),
	@posmax varchar( 10 )

set @pos = '003000'
 -- 20 up from "003000"
 
select top  20  * into # 1  from request where request_num <= @pos  order by request_num desc
select * from # 1  order by  1  asc
select @posmin = min(request_num) from # 1 
select @posmax = max(request_num) from # 1 
 /*
insert into #2 select * from #1 или делайте что хотите
*/ 
drop table # 1 
print @posmin
print @posmax
print ''

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 -- create proc scroll_down
 
declare 
	@pos varchar( 10 ),
	@posmin varchar( 10 ),
	@posmax varchar( 10 )

set @pos = '003000'
 -- 20 down from "003000"
 
select top  20  * into # 1  from request where request_num >= @pos order by request_num asc
select * from # 1 
select @posmin = min(request_num) from # 1 
select @posmax = max(request_num) from # 1 
 /*
insert into #2 select * from #1 или делайте что хотите
*/ 
drop table # 1 
print @posmin
print @posmax
print ''

Скролит замечательно и быстро. Естественно, вставляйте свои таблицы и параметры с сообветствующими типами.
Однако, как советовали многие, клиенту выдаю порцию определенных записей, например за месяц.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SQL 400 000 записей, их скролинг. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]