Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Посоветуйте варианты реализации


Автор: NieL 18.9.2008, 17:28
Какие варианты реализации вы можете посоветовать. Задача: необходиме реализовать перемещение по таблице, т.е. написать метод Last. Сложность в том что перемещение будет происходить только по определенным записям в таблице. Т.Е. к примеру есть 
таблица c полями:

id_code             |             group_id
-------------------------------------------
1                              0
2                              1
3                              0
4                              1
5                              0
...                            ...

Перемещаться в данном случае необходимо по записям с group_id = 1; После вызова написанного метода Last должен возвратиться ID_CODE последней записи (в данном случае это запись с id_code = 4). Необходимо взять в учет что с таблицей может работать несколько пользователей. 

СУБД: DBISAM
хранимые процедуры не поддерживаются




Автор: pseud 18.9.2008, 17:54
Код

select max(t.id_code) from table1 t where t.group_id = 1

Автор: NieL 18.9.2008, 18:01
Большое спасибо, чет к вечеру совсем тупею. А как можно реализовать методы Next, Prev (они уже написаны вообщем-то, но перемещение происходит через Table, а хотелось бы реализовать ввиде SQL-запроса)

Автор: pseud 18.9.2008, 18:04
а нельзя сразу в выборку TXXXQuery отобрать записи по первой группе?
Код

select t.* from table1 t where t.group_id = 1

и по выборке ходить туда-сюда?

Добавлено через 1 минуту и 9 секунд
даже так:
Код

select 
  * 
from 
  table 
where 
  group_id = 1
order by
  id_code

Автор: NieL 18.9.2008, 18:13
Цитата(pseud @ 18.9.2008,  18:04)
а нельзя сразу в выборку TXXXQuery отобрать записи по первой группе?
Код

select t.* from table1 t where t.group_id = 1

и по выборке ходить туда-сюда?

Добавлено @ 18:05
даже так:
Код

select 
  * 
from 
  table 
where 
  group_id = 1
order by
  id_code

Такой вариант рассматривался, но было решено его оставить ( P.S. на самом деле таблица не такая как я привел раньше).

Автор: pseud 18.9.2008, 18:19
Цитата(NieL @  18.9.2008,  18:13 Найти цитируемый пост)
 P.S. на самом деле таблица не такая как я привел раньше


приводи реальныую (ну или почти реальную если копирайт) таблицу и говори толком че надо.
имхо реализовывать какие-то свои методы nextprevlast и прочее никчему.
т.к. они прекрасно реализованы у ближайших потомков TDataSet

Автор: Deniz 19.9.2008, 05:48
NieL, next и prev реализовать достаточно просто
Допустим ты стоишь на записи с id_code = 123, и надо сделать next
Код
select min(id_code) from table where id_code > 123 and group_id = 1

аналогично для prev
Код
select max(id_code) from table where id_code < 123 and group_id = 1


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)