Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посоветуйте варианты реализации 
V
    Опции темы
NieL
Дата 18.9.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: нет
Всего: 1



Какие варианты реализации вы можете посоветовать. Задача: необходиме реализовать перемещение по таблице, т.е. написать метод 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
хранимые процедуры не поддерживаются




PM MAIL   Вверх
pseud
Дата 18.9.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Код

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



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
NieL
Дата 18.9.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: нет
Всего: 1



Большое спасибо, чет к вечеру совсем тупею. А как можно реализовать методы Next, Prev (они уже написаны вообщем-то, но перемещение происходит через Table, а хотелось бы реализовать ввиде SQL-запроса)
PM MAIL   Вверх
pseud
Дата 18.9.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



а нельзя сразу в выборку TXXXQuery отобрать записи по первой группе?
Код

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

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

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

select 
  * 
from 
  table 
where 
  group_id = 1
order by
  id_code



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
NieL
Дата 18.9.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: нет
Всего: 1



Цитата(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. на самом деле таблица не такая как я привел раньше).
PM MAIL   Вверх
pseud
Дата 18.9.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



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


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


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Deniz
Дата 19.9.2008, 05:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



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




--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0695 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.