Перемещение в MSSQL вперед, назад,и т.д.
От: xandr  
Дата: 06.03.05 23:41
Оценка:
В клиентском приложении на форме есть кнопки [|<] [ < ] [ > ] [ >| ]
Какие запросы необходимо записать в MS SQL 2000 чтобы выполнять эти перемещения по записям?
Думаю что надо исп-ть CURSOR, но аозможен ли он не в хранимых процедурах?
(У каждого клиента свой серверный поток с отдельным соединением с БД)


07.03.05 12:03: Перенесено модератором из '.NET' — AndrewVK
Перемещение в MSSQL вперед, назад,и т.д.
От: Аноним  
Дата: 06.03.05 23:49
Оценка:
Тут можно и без SQL сервера обойтись — загрузить все записи в DataSet (если их мало) или вообще в перемещаться внутри DataSet (если же это строки, то загрузить все записи в массив).
Либо создать запрос на выборку определенного числа записей из базы.
Подробности в google, ключевое слово pagination.
--
VBSTREETS, Editor-in-Chief
http://blogs.gotdotnet.ru/personal/gaidar/


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Перемещение в MSSQL вперед, назад,и т.д.
От: Аноним  
Дата: 07.03.05 00:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Тут можно и без SQL сервера обойтись — загрузить все записи в DataSet (если их мало) или вообще в перемещаться внутри DataSet (если же это строки, то загрузить все записи в массив).

Загружать все записи не подойдет(полей много в каждой и при этом есть связанные записи(такие как — телефоны, емаил адреса...)).
Записей будет >1000 точно.

А>Либо создать запрос на выборку определенного числа записей из базы.

А>Подробности в google, ключевое слово pagination.

Как я посмотрел в гугле, pagination исп-ся в основном в ASP при Web интерфейсе для фрагментации результатов
и отображении их в DataGrid.

В моем случае главная форма Windows Forms приложения содержит поля записей как текстбоксы и подобные им.
На форме отображается конкретная запись.
У заказчика было подобное приложение на FoxPro и использовался стандартные метод перемещения вперед, назад.
Заказчик хочет подобный метод и тут.


А>
данное сообщение получено с www.gotdotnet.ru

А>ссылка на оригинальное сообщение
Re: Перемещение в MSSQL вперед, назад,и т.д.
От: Аноним  
Дата: 07.03.05 08:40
Оценка:
К сожалению, DataReader читает только в одну сторону, поэтому, каждый раз придется выполнять новую команду-запрос к SQL.
Как вариант — можно пользоваться ID. Например, вперед и назад будут реализованы так:
<| select * from Table where ID = currentID-1
>| select * from Table where ID = currentID+1

Если может случится так, что ID идут не по порядку, то нужно делать иначе:
<| select top 1 * from Table where ID < currentID
>| select top 1 * from Table where ID > currentID

Таким образом вы будете переходить к предыдущей записи или к следующей. Конечно же, надо рассчитать, не достигнута ли первая или последняя запись, например так:
select top 1 ID from Table order by ID -- первый ID
select top 1 ID from Table order by ID desc -- последний ID

Эти ID соххранить и использовать в качестве конопок — перейти к первому или к последнему.

А теперь главный вопрос — в таблице есть колонка под ID с автоинкрементом? Если нет, то обязательно заведите.
--
VBSTREETS, Editor-in-Chief
http://blogs.gotdotnet.ru/personal/gaidar/


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Перемещение в MSSQL вперед, назад,и т.д.
От: xandr  
Дата: 07.03.05 12:18
Оценка:
Попробую реализовать так как вы предложили.

А>А теперь главный вопрос — в таблице есть колонка под ID с автоинкрементом? Если нет, то обязательно заведите.

Конечно есть, г... вопрос :D
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.