В клиентском приложении на форме есть кнопки [|<] [ < ] [ > ] [ >| ]
Какие запросы необходимо записать в MS SQL 2000 чтобы выполнять эти перемещения по записям?
Думаю что надо исп-ть CURSOR, но аозможен ли он не в хранимых процедурах?
(У каждого клиента свой серверный поток с отдельным соединением с БД)
07.03.05 12:03: Перенесено модератором из '.NET' — AndrewVK
Тут можно и без SQL сервера обойтись — загрузить все записи в DataSet (если их мало) или вообще в перемещаться внутри DataSet (если же это строки, то загрузить все записи в массив).
Либо создать запрос на выборку определенного числа записей из базы.
Подробности в google, ключевое слово pagination.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, Аноним, Вы писали:
А>Тут можно и без SQL сервера обойтись — загрузить все записи в DataSet (если их мало) или вообще в перемещаться внутри DataSet (если же это строки, то загрузить все записи в массив).
Загружать все записи не подойдет(полей много в каждой и при этом есть связанные записи(такие как — телефоны, емаил адреса...)).
Записей будет >1000 точно.
А>Либо создать запрос на выборку определенного числа записей из базы.
А>Подробности в google, ключевое слово pagination.
Как я посмотрел в гугле, pagination исп-ся в основном в ASP при Web интерфейсе для фрагментации результатов
и отображении их в DataGrid.
В моем случае главная форма Windows Forms приложения содержит поля записей как текстбоксы и подобные им.
На форме отображается конкретная запись.
У заказчика было подобное приложение на FoxPro и использовался стандартные метод перемещения вперед, назад.
Заказчик хочет подобный метод и тут.
А>
данное сообщение получено с www.gotdotnet.ru
А>ссылка на оригинальное сообщение
К сожалению, 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 с автоинкрементом?

Если нет, то обязательно заведите.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Попробую реализовать так как вы предложили.
А>А теперь главный вопрос — в таблице есть колонка под ID с автоинкрементом?
Если нет, то обязательно заведите.
Конечно есть, г... вопрос :D