![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возврат на запись после редактирования [D5, Oracle, ]
Gollo © (2001-12-16 23:29:00)Как примерно возвратиться на редактируемую запись в Query после Close->Open? RecNo и Bookmark не помогают!Refresh подходит только для простого запроса из одной таблицы!А прокручивать с начала для пользователя не приемлемо!Поискал по сайту но ничего не нашел!Зарание благодарен за любую подсказку!
SergVlad (2001-12-18 09:31:00) [1]Можно попробовать сделать следующее при удалении.
- запоминать первое,в порядке сортировки, поле в удаляемой записи.
- после переоткрытия позиционировать на поле по неполному соответствию.
Gollo (2001-12-17 23:53:00) [2]Хорошо я попробую завтра,Спасибо!
petr_v_a (2001-12-17 23:47:00) [3]select rownum, field1,field2
from my_table
подробнее поиском в Oracle SQL Reference на слово pseudocolumn.
единственно, в версиях до 8.1.5, если в запросе есть order by, то все rownum будут перемешаны( с большой вероятностью ). В 8.1.х это обходится
select rownum,q.*
from
(
select field1,field2
from my_table
order by field3
) q
Gollo (2001-12-17 23:25:00) [4]>petr_v_a Если можно поподробнее насчет rownum! А как мне узнать порядковый намерредактируемой записи? мне впринципе только это надо потом сделаю MoveBy при открытии
petr_v_a (2001-12-17 23:00:00) [5]Если на запись с тем же номером( 5-ю, 10-ю ) - тогда locate по rownum (! в верисях до 8.1.5 съзжает при order by ). Если с тем же смыслом - по полю с уникальным значением, а уж если ее удалили - ничего не поделаешь.
>Котелок результат запросаникогда не индексирован :) Индекс полезен на этапе выполнения запроса, но никак не при работе с его результатом, BDE точно никак не умеет работать с индексом на сервере Oracle
Dick (2001-12-17 22:46:00) [6]Делай то же, что и в пред. примере, только для предыдущей или следующей записи.
Gollo (2001-12-17 22:39:00) [7]А если запись удаляют или добавляют!Это не сработает!
Котелок (2001-12-17 04:13:00) [8]
Перед close->open;
Curlocate := query1.fieldbyname("<поле>").asinteger; Если есть индексированное поле в результате запроса. Если нет, то поле с уникальным значением.
После
Query1.locate("<То же поле>",CurLocate,[]);
Позиция встала на ту запись.