![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аналог команды RecNo в Interbase [D5, IB6.x]
harismatik © (2002-02-06 16:55:00)Чем в клиент-серверной базе(Interbase) можно заменить команду RecNo (номер записи в таблице)?
Johnmen (2002-02-07 18:19:00) [1]>drpass © : согласен.
drpass (2002-02-07 18:05:00) [2]Да нет, в принципе, знание номера текущей записи никому нафиг не нужно, но интерфейс кажется не таким унылым, и производительность работы юзера увеличивается :)
Johnmen (2002-02-07 17:04:00) [3]>drpass © : даже инфа типа "Запись 30 из 54467" неинформативна, нет в ней никакого глубокого смысла :)
drpass (2002-02-07 16:30:00) [4]А объясните мне, недалекому, а зачем вообще может понадобиться RecNo (не в смысле "что она делает", это я знаю, а в смысле "для каких задач ее применять"). Я только смог придумать счетчик внизу экрана вида "Запись 30 из 54467" (кстати, прекрасно работает с клиент-серверной БД)
Alexandr (2002-02-07 14:40:00) [5]все вспомнил.
Я в FIBPlus использовал один раз RecNo для TpFIBPlusDataSet
все работало. Показывало порядковый номер текущей записи в запросе.
И не пытайтесь спорить с этим.
Fareader (2002-02-07 14:32:00) [6]Даже если через BDE - RecNo нет при работе с IB. А чем Locate не устраивает?
Alexandr (2002-02-07 14:20:00) [7]1) rdb$key, но это немножко не то, что надо челу.
2) А если через BDE работать, то RecNo есть, по-моему.
3) Можно запрос делать из процедуры, а там сэмулировать RecNo
4) Можно и напрямую в select но на каждый селект для каждого юзера нужен свой генератор, да и хлопотно это...
Johnmen (2002-02-07 13:59:00) [8]>evgeg © : ты что-то напутал :)
>harisma © : Locate"ом...
harisma (2002-02-07 13:52:00) [9]Всем спасибо, кто откликнулся. Но все же, как заменить єту парадоксовскую логику на серверную? Дело в том, что я при помощи этой команды делаю перемещения по таблице командой MoveBy. Чем ее можно заменить?
evgeg (2002-02-06 23:14:00) [10]В каждой Интербайсовской таблице есть скрытое поле, в котором хранится
номер записи. Как называется, точно не помню, что-то начинающееся с rdb$. Сходи на ib.demo.ru, поищи в документации,
или спроси на тамошней news-конференции.
Только IMHO не стоит этим полем пользоваться. В SQL-базах свои
методы работы, не надо тащить туда логику Paradox-а.
Fareader (2002-02-06 19:57:00) [11]Все-таки не получается : уходят записи, идущие после удаляемой :(
Fareader (2002-02-06 18:51:00) [12]Не спорю, мысли вслух, сам хотел похожее сделать, но вот как-то не пришлось. А интересно чего все таки получится. надо будет попробовать. Пока сам не засунешь пальцы в розетку - не поймешь, что этого делать не надо.
Johnmen (2002-02-06 18:42:00) [13]>Fareader © : Так нельзя !
Johnmen (2002-02-06 18:40:00) [14]>Fareader © : Такни в коем случае нельзя!!!
Fareader (2002-02-06 18:30:00) [15]Если очень хочется...
Попробуй сделать что-то вроде автоинкремент (тригер на before insert с занесением значения генератора), а если удаляешь, то сделай триггер на BeforeDelete
update table1 set no=no-1
where no>old.no
Может поможет попробуй, но как отреагирует сервер на такие комбинации не знаю ;))
Johnmen (2002-02-06 18:24:00) [16]>Johnny Smith : [D5, IB6.x] а не Oracle8i !
Johnny Smith (2002-02-06 17:32:00) [17]В Oracle8i такая фунукция есть. Правда, этот самый RecNo строится в рамках текущего набора данных.
Johnmen (2002-02-06 17:20:00) [18]Основываясь на концепции SQL серверных БД - решения нет,
т.к. нет понятия номер записи!
harismatik (2002-02-06 17:14:00) [19]Да, но при удалении записей номер в этом поле будет отличаться от номера записи в таблице. Что тут посоветуете?
Johnmen (2002-02-06 17:11:00) [20]Вобщем-то ничем, разве что завести поле а-ля автоинкремент...