![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аналог следующего update на Access-e [MySQL, Access]
Dmitry S © (2008-08-05 18:28:00)MySQL:
SET @i=0;
UPDATE `table` SET `field`=(@i:=@i+1) WHERE ... ORDER BY [name];
Как сделать тоже самое на Access-e?
Устно говоря, задача такая: пронумеровать по порядку таблицу в при определенной сортировке.
Dmitry S (2008-08-06 14:42:00) [1]В поле, как и в любом другом.
Вопрос не в этом!
Сергей М. (2008-08-06 14:33:00) [2]
> Вообще то хранит
Где ? Показывай ..
Dmitry S (2008-08-06 14:28:00) [3]
> И НЕ хранит в контейнере нумерацию листов)
Вообще то хранит, но автоматически обновляет данное поле (я имею ввиду саму надпись номера страницы).
> Palladin © (06.08.08 14:16) [47]
Вероятно этот полный бред и нужно вывести, потому что данная нумерация нужна не только для отображения.
Отнеситесь к задаче не как к реальной, а как к тестовой на каком либо экзамене.
Сергей М. (2008-08-06 14:19:00) [4]Ему про фому, а он все про ерему гнет)
> Dmitry S © (06.08.08 13:52) [45]
> изза 10 строк тащить из базы еще 15000 .. нумеровать
Это твоислова ?
Так вот Ворд именно это и делает)
И НЕхранит в контейнере нумерацию листов)
Palladin (2008-08-06 14:16:00) [5]какой глупоко ректальный подход к нумерованию в определенном порядке, нужному толькодля отображения, а не для хранения... это что'ж это... 10 подряд запросов к таблице - 10 подряд апдейтов всей таблицы... от маразм... при чем никакой из них к нужному результату не приведет... при последующей выборке в надежде на упорядоченность вполне вероятно получишь полный бред...
Medbe}I{onok XML (2008-08-06 13:57:00) [6]пациент безнадежен. мы его теряем
Dmitry S (2008-08-06 13:52:00) [7]
> По ассоцииации с СУБД считай что Ворд являет собой при этом
> клиента.
А ты считай, что СУБД это Ворд, а клиент это ты. Ты знаешь что тебе нужны страницы с 300 по 1000. Ты делаешь запрос "300-1000", получаешь (через принтер) свой результат пронумерованный с 300 по 1000. Ты ведь не будешь печатать весь документ, затем выбирать из него нужные тебе страницы.
Сергей М. (2008-08-06 13:46:00) [8]
> Пример из жизни
Хреновый пример, за отмазку не канает)
Прежде чем отправить задание на печать Ворд засосал из файла весьдокумент.
> нужно ли тебе видеть все остальные страницы, чтобы продолжить
> печать, или достаточно в диалоге печати задать диапазон
> печати "300-1000"?
Мне не нужно. А вот Ворду нужен весьдокумент, чтобы расчитать, с какого "места" начинается 300-я страница.
По ассоцииации с СУБД считай что Ворд являет собой при этом клиента. И прежде чем юзер узрит нумерацию интересующих юзера листов (хоть на бумаге хоть на экране - монопенисуально), Ворд вынужденпрочитать и отрендерить весь документ.
Dmitry S (2008-08-06 13:45:00) [9]
> Заведи локальное поле Statusб в которое пиши по мере необщрдимости
> - напечатано, или нет.
Потом выборку по этому полю, а нумеровать то как?
Ega23 (2008-08-06 13:43:00) [10]
> Ок. У каждой строки, к примеру, есть флаг - напечатана она
> или нет. Необходимо вывести строки, которые до этого не
> были напечатаны? Как тогда нумеровать?
Заведи локальное поле Statusб в которое пиши по мере необщрдимости - напечатано, или нет.
Dmitry S (2008-08-06 13:41:00) [11]
> Medbe}I{onok XML © (06.08.08 13:38) [39]
Ок. У каждой строки, к примеру, есть флаг - напечатана она или нет. Необходимо вывести строки, которые до этого не были напечатаны? Как тогда нумеровать?
Dmitry S (2008-08-06 13:40:00) [12]
> Ega23 © (06.08.08 13:29) [37]
Думаю проблема в понимании самого смысла данного поля. Назову его по другому. Не порядковый номер, а позиция, которая строго определена определенными условиями.
И когда пользователь сортирует таблицу по полю Value, он все равно видит позицию такой, какая она есть.
Просто так совпало, что позиция - это номер строки при определенной сортировке. А так это такое же поле как и Name и Value.
Medbe}I{onok XML (2008-08-06 13:38:00) [13]чтобы продолжить печать, или достаточно в диалоге печати задать диапазон печати "300-1000"? Понимаешь о чем я?
inputbox('скажите начальный номер' .....)
dataset.MoveBy();
while not eof do
вывод на принтер;
инкремент номера строки;
next;
end;
Dmitry S (2008-08-06 13:32:00) [14]
> С другой стороны, как юзер узнает , что ему нужно оперировать
> с M записями, начиная с N-ной, пока он не увидит все K записей,
> среди которых фигурируют эти самые N интересующих его записей
> ?
Легко.
Пример из жизни: Ты печатаешь Word-документ из 1000 страниц с нумерацией. На 300ой странице принтер дает сбой. Ты видишь, что последняя страница 299, нужно ли тебе видеть все остальные страницы, чтобы продолжить печать, или достаточно в диалоге печати задать диапазон печати "300-1000"? Понимаешь о чем я?
> sniknik © (06.08.08 13:19) [31]
Вот это уже интереснее. Задача усложняется еще тем, что простым name<="'table.name'" тут не обойтись, потому что в задаче сортировка задается по полям двух таблиц. Но от этого уже можно исходить! Спасибо.
Ega23 (2008-08-06 13:29:00) [15]
> Я упростил задачу до минимума еще в [0], зачем усложнять?
Я ещё раз тебя спрашиваю:
Я получил на клиент НД в таком виде:
ID Name Value
__ _____ ____
1 A 18
2 B 15
3 C 44
Теперь на клиентея отсортировал эти данные по Value (имею право)
ID Name Value
__ _____ ____
2 B 15
1 A 18
3 C 44
Нумерация сбилась нафиг.
Вопрос: зачем её тянуть с сервера, если на клиенте один хрен придётся перестраивать? Это и удобнее и проще и идеологически более правильно.
Medbe}I{onok XML (2008-08-06 13:24:00) [16]В данной задаче не используются ни компоненты-отчеты
то есть цикл и вывод на tprinter ?
Монопенисуально.
Текущий номер строки все равно есть.
Medbe}I{onok XML (2008-08-06 13:22:00) [17]а кто здесь недавно про печать строк говорил?
Сергей М. (2008-08-06 13:22:00) [18]И вообще, всякий раз апдейтить на сервере таблицу ради сиюсекундного каприза юзера иначе как маразмом не назовешь.
Dmitry S (2008-08-06 13:21:00) [19]
> Ega23 © (06.08.08 13:16) [28]
Я упростил задачу до минимума еще в [0], зачем усложнять?
Специально для Medbe}I{onok XML. В данной задаче не используются ни компоненты-отчеты, ни даже DB-компоненты, за исключением самого TADOConnection, конечно.
sniknik (2008-08-06 13:20:00) [20]> с описанными ограничениями
вернее с одним... на второе плюнул. ;(