Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аналог команды 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]

Вобщем-то ничем, разве что завести поле а-ля автоинкремент...


Наверх

Титульная страница Поиск, карта сайта Написать письмо