![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ODAC/ запомнить и восстановить текущее положение в dataset [D7]
12 © (2010-03-23 16:26:00)Как можно запомнить и восстановить текущее положение в dataset?
Пытаюсь избавится от последствий Refresh, которое использую
для отображения внесенных только что записей
А после refresh текущей становится в общем случае другая запись.
Можно: Запомнить запись, Refresh, отыскать ее, сделать текущей
Не работал с ODAC вообще, может как-то по-другому проще?
Медвежонок Пятачок (2010-03-25 01:27:00) [21]правильно и надежно - это кто вообще определил?
редактируем запись.
меняем значения полей.
в том числе возможно и ключевых.
и чем локейт в этом случае правильнее букмарка?
MsGuns (2010-03-24 22:58:00) [22]Сыр-бор оттого, что при редактировании в гриде нехило б было сделать юзеру банально приятно,- чтоб он после завершения редактирования (вставки, удаления) записи не терял то место, где он редактировал. Желание, кстати, вполне понятное, вопреки мнению некоторых тут. В самом деле, представьте, что после вставки в исходник новой строки вас перебрасывали бы в начало кода :)
Твой метод работает в случае, если таблица на все время редактирования не изменяется более никем
Закладываться на метод, работающий только "по погоде" - это подставить юзера. Причем, как обычно, "глюк" вылезет в самый неподходящий момент.
Не проще ли сразу делать правильно и надежно, не полагаясь на пресловутое "я так всегда делал - и ничего" ?
Медвежонок Пятачок (2010-03-24 21:34:00) [23]А откуда оно узнает, false ему надо становиться или не false ?
узнает через метод датасета.
Честно говоря вообще не догоняю из чего весь сыр бор.
Я этот метод применял на всем от парадокса до оракла и от бдешных tquery до одаковских ораквери.
Везде это работало. Везде.
Если я и не применял эту фичу, то не потому что не работало, а потому что либо это было ненужно, либо излишне напрягало сервер.
Игорь Шевченко (2010-03-24 21:22:00) [24]Медвежонок Пятачок © (24.03.10 21:14) [24]
> Ядерного взрыва не произойдет.
Не произойдет.
> Либо букмарквалид будет false
А откуда оно узнает, false ему надо становиться или не false ?
> Ткнет юзер мышкой куда ему надо если курсор не там где он
> ожидает. И все.
Мы из этих соображений не позиционируемся на последнюю запись, где оно стояло. Обновляет пользователь, так обновляет, сам, его никто не заставляет, поэтому попадает на начало Dataset-а.
Медвежонок Пятачок (2010-03-24 21:15:00) [25]Е-е-ето как ето ?
Это встать курсором на ту же запись, на которой стоял курсор перед рефрешем датасета.
Медвежонок Пятачок (2010-03-24 21:14:00) [26]В общем случае невозможно. Ее могут удалить
Ядерного взрыва не произойдет.
Либо букмарквалид будет false, либо датасет отпозиционируется не совсем туда куда хотелось бы.
Так как сама фича из области бантиков и рюшечек, на приложение это никак не повлияет. Ткнет юзер мышкой куда ему надо если курсор не там где он ожидает. И все.
MsGuns (2010-03-24 20:58:00) [27]>Медвежонок Пятачок © (24.03.10 20:15) [21]
>После чего восстановитьтекущую запись которая была перед закрытием
Е-е-ето как ето ?
Игорь Шевченко (2010-03-24 20:44:00) [28]
> После чего восстановить текущую запись которая была перед
> закрытием
В общем случае невозможно. Ее могут удалить
Медвежонок Пятачок (2010-03-24 20:15:00) [29]А что, собсна, она ДОЛЖНА знать ?
Да ничего.
Есть TDataSet
Нужно закрыть его и открыть. После чего восстановить текущую запись которая была перед закрытием
MsGuns (2010-03-24 19:22:00) [30]К комментариям-"отмазкам" Медвежонка:
Если НД РЕДАКТИРУЕТСЯ, то, надо полагать, редактируется ОДНА таблица, а не несколько (иначе - "старуха с клюкой" (с))
А если таблица ОДНА, то и с идентификаторм проблем быть не должно.
MsGuns (2010-03-24 19:19:00) [31]>Медвежонок Пятачок © (24.03.10 18:33) [17]
>То есть это случай, когда библиотечная функция ничего не знает о >конкретном датасете.
А что, собсна, она ДОЛЖНА знать ?
Игорь Шевченко (2010-03-24 19:00:00) [32]
> Как можно запомнить и восстановить текущее положение в dataset?
>
> Пытаюсь избавится от последствий Refresh, которое использую
>
> для отображения внесенных только что записей
что-то не так в консерватории.
Медвежонок Пятачок (2010-03-24 18:33:00) [33]и чо? все три первичных ключа таблиц дают первичный ключ набора данных
если нет, то обрабатывать это бессмыссленно - плохое проектирование
Речь шла о библиотечной функции, которая восстанавливает позицию в датасете после рефреша.
То есть это случай, когда библиотечная функция ничего не знает о конкретном датасете.
Я и говорю.
В датасете три таблицы со своими первичными ключами.
у всех они составные.
Вы ничего внутри функции не знаете о датасете.
Получите список имен полей праймари кеев, который будут заюзаны в вашем локейте.
В моем случае я сделаю гетбукмарк, затем проверю его на нил и проверю на букмарквалид. Если все ок, сделаю гоутубукмарк.
А что сделаете вы?
Правильный$Вася (2010-03-24 17:29:00) [34]
> собьется раз в пятилетку - фиг с ним
это рулетка
и далеко не всем в ней везет
иногда и застрелиться случайно можно
> MsGuns © (24.03.10 16:43) [15]
симметричное клеймо с противоположной стороны поставить, чтоб всем видно было, куда метить
MsGuns (2010-03-24 16:43:00) [35]За рекомендацию пользоваться букмарками при переоткрытии датасета медвежонку надо по тятачку
:)
12 (2010-03-24 14:15:00) [36]TBookmark заюзал
не самолеты пишу, а собьется раз в пятилетку - фиг с ним
Правильный$Вася (2010-03-24 12:49:00) [37]
> объединение из трех таблиц.
> присутствуют первичные ключи из всех трех.
и чо? все три первичных ключа таблиц дают первичный ключ набора данных
если нет, то обрабатывать это бессмыссленно - плохое проектирование
> все три ключа составные.
и чо? ломает, что ли?
> достаньте список колонок по которым надо делать локейт.
и чо? 10 колонок с их значениями трудно запихать в класс ТПервичныйКлюч и обработать в библиотеке?
> я понимаю, что это (как и все остальное) не намного сложнее чем букмарк.
это РЕАЛЬНО так
как говорится: "кто хочет - ищет способы, кто не хочет - ищет причины"
Медвежонок Пятачок (2010-03-24 12:09:00) [38]объединение из трех таблиц.
присутствуют первичные ключи из всех трех.
все три ключа составные.
достаньте список колонок по которым надо делать локейт.
я понимаю, что это (как и все остальное) не намного сложнее чем букмарк.
Правильный$Вася (2010-03-24 11:39:00) [39]
> Медвежонок Пятачок © (24.03.10 10:53) [9]
а потом самолеты падают
и все потому, что кое-кто слишком боится перетрудиться
кстати, ТПервичныйКлюч ненамного сложнее ТБукмарк для использования в библиотеке
Anatoly Podgoretsky (2010-03-24 11:37:00) [40]> Медвежонок Пятачок (24.03.2010 10:53:09) [9]
Код с Locate даже короче и проще чем с букмарк