Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];
Вниз=Bookmark= и Найти похожие ветки
← →
Drowsy (2008-09-17 12:36) [0]На форме грид, связанный с большой (по количеству записей)
таблицей.
При переоткрытии таблицы грид иногда нормально реагирует на
"восстановление закладки", а иногда "сбрасывает" текущую запись в начало. Почему?
with (Datasource.Dataset as tpFIBDataSet) do
try
locBookmark := GetBookmark;
DisableControls;
........
........
Close;
........
........
finally
if not Active then Open;
EnableControls;
GOTOBookmark (locBookmark);
FreeBookmark (locBookmark);
end;
← →
Поросенок Винни-Пух © (2008-09-17 12:42) [1]как то ты очень уж самоуверенно рисуешь код.
где проверки полученных букмарков на нил и на валид перед их применением?
← →
Правильный$Вася (2008-09-17 12:43) [2]потому что букмарк имеет смысл только в рамках одного открытого датасета
переоткрытие делает букмарки инвалидными, о чем прямо написано в справке
фактически букмарк - это адрес, а что расположится по тому адресу после переоткрытия датасета - неизвестно, может, там вообще мусор будет, может - участок других данных
в самом оптимистичном частном случае - какая-то (не обязательно та жепо номеру) запись из свежеоткрытого датасета
← →
Правильный$Вася (2008-09-17 12:45) [3]переход на запомненную записб лучше делать locate по ключу в датасете
← →
Поросенок Винни-Пух © (2008-09-17 12:47) [4]переоткрытие делает букмарки инвалидными, о чем прямо написано в справке
Да ладно. Не все так печально.
← →
Drowsy (2008-09-17 12:48) [5]Ага, попробую с locate. Спасибо!
← →
Drowsy (2008-09-17 12:52) [6]Только думаю, что grid всё равно будет "дёргаться", делая locate -ную строку первой видимой в гриде... :(
← →
clickmaker © (2008-09-17 12:56) [7]> [6] Drowsy (17.09.08 12:52)
> Только думаю, что grid всё равно будет "дёргаться",
DataSet.DisableControls / EnableControls
← →
Sergey13 © (2008-09-17 13:02) [8]> [0] Drowsy (17.09.08 12:36)
> На форме грид, связанный с большой (по количеству записей) таблицей.
Уменьши (по количеству записей) "таблицу".
← →
Drowsy (2008-09-17 13:08) [9]
> Уменьши (по количеству записей) "таблицу".
вери-вери гуд джоке
← →
Правильный$Вася (2008-09-17 13:12) [10]
> вери-вери гуд джоке
это не шутка, это намек на использование запросов, а не пухлых таблиц
юзеру не нужно больше 200 записей сразу, он не переварит их
← →
Ega23 © (2008-09-17 13:12) [11]
> вери-вери гуд джоке
как-то ты в слове "эдвайс" аж хрен знает сколько ошибок допустил - "джоке".
← →
Ega23 © (2008-09-17 13:13) [12]
> юзеру не нужно больше 200 записей сразу, он не переварит их
По секрету: юзеру в определённый момент времени редко бывает нужно записей больше, чем в гриде помещается... :)
← →
Правильный$Вася (2008-09-17 13:17) [13]
> По секрету:
это явно автору, бо я много секретов знаю
← →
Drowsy (2008-09-17 13:20) [14]
> это явно автору,
Точно, мне.
Буду переваривать тему запроса вместо табла....
← →
Drowsy (2008-09-17 13:44) [15]Вопрос по технике реализации "запроса вместо табла":
IBQuery -> Select в грид через Create View запихивать?
Или как-то по другому?
← →
Sergey13 © (2008-09-17 13:48) [16]> [15] Drowsy (17.09.08 13:44)
> Или как-то по другому?
Через книжку желательно.
> IBQuery
IBDataSet
← →
Правильный$Вася (2008-09-17 13:54) [17]
> Select в грид через Create View запихивать
это перпендикулярные вещи
select можно из таблиц, вьюх, процедур делать, и в разных комбинациях
← →
Труп Васи Доброго © (2008-09-17 15:23) [18]
> потому что букмарк имеет смысл только в рамках одного открытого
> датасета
> переоткрытие делает букмарки инвалидными, о чем прямо написано
> в справке
фАНТАСТИКА!!! Я вот был уверен что букмарк запоминает номер записи в датасете. И почему то у меня ещё ни разу запомненый до закрытия датасета букмарк не выбросился в мусор после переоткрытия. Если искомой записи нет в датасете, то, текущей становится запись с тем же номером, что был у запомненной.
А вот локате точно будет "дёргаться"
← →
Труп Васи Доброго © (2008-09-17 15:27) [19]Да, добрый совет - НИКОГДА не обращайся к таблицам напрямую! Через запросы only! И желательно не прямой запрос, а через ХП!
Не буду обосновывать, просто убеждён что это правильнее, чем давать прямой доступ к таблице.
← →
Правильный$Вася (2008-09-17 15:38) [20]
> Я вот был уверен что букмарк запоминает номер записи в датасете
type TBookmark = Pointer;
в общем случае указывает, на что угодно
в частном для ADO, например, хранит номер записи как элемент рекорда
> желательно не прямой запрос, а через ХП!
не буду холиварить, но если автор не знает, что такое запрос, то уж ХП ему рановато объяснять
тем более, что далеко не во всех СУБД есть
← →
Johnmen © (2008-09-17 15:41) [21]
> Труп Васи Доброго © (17.09.08 15:23) [18]
> фАНТАСТИКА!!!
Реальность.
> прямой доступ к таблице.
Это как это?
> И желательно не прямой запрос, а через ХП!
Тоже маньяк? :)
← →
Ega23 © (2008-09-17 15:55) [22]
> фАНТАСТИКА!!! Я вот был уверен что букмарк запоминает номер
> записи в датасете. И почему то у меня ещё ни разу запомненый
> до закрытия датасета букмарк не выбросился в мусор после
> переоткрытия. Если искомой записи нет в датасете, то, текущей
> становится запись с тем же номером, что был у запомненной.
> А вот локате точно будет "дёргаться"
Тебе просто ОЧЕНЬ сильно повезло.
← →
Anatoly Podgoretsky © (2008-09-17 16:01) [23]Букмарки не стабильны и нормальный программист не будет их использовать никогда, если только не дурак.
← →
ПРавильный$Вася (2008-09-17 16:03) [24]
> Anatoly Podgoretsky © (17.09.08 16:01) [23]
нам скальпель не нужен, у нас топор есть
?
← →
Johnmen © (2008-09-17 16:05) [25]
> Anatoly Podgoretsky © (17.09.08 16:01) [23]
Я думаю, это чересчур категорично.
← →
Ega23 © (2008-09-17 16:15) [26]
> Букмарки не стабильны и нормальный программист не будет
> их использовать никогда, если только не дурак.
Я использую. Для "пробега" по датасету - самое оно. Для мультиселекта в гриде - тоже. Всё стабильно работает уже х.з. сколько лет.
Что я делаю не так?
← →
Труп Васи Доброго © (2008-09-17 16:19) [27]
> Букмарки не стабильны и нормальный программист не будет
> их использовать никогда, если только не дурак.
Чё вы накинулись? Я реально был не в курсе и искренне удивлён таким высказываниям про букмарки. Я их пользовал достаточно редко, но когда пользовал, то ни разу не было сбоя(!!!) (наверное я везунчик) Я даже никогда их на валидность не проверял (теперь стыдно, но, блин, работате же..)
Обещаю впредь букмарки не использовать!
> Тоже маньяк? :)
Нет, не маньяк, но "человек базы" :) И предпочитаю всё программирование БД сводить к триггерам и ХП в самой базе, а на приложение оставляю лишь запросы с параметрами. ОЧЕНЬ удобно.
← →
Правильный$Вася (2008-09-17 16:29) [28]
> Обещаю впредь букмарки не использовать!
впадение в крайности есть признак незрелого ума
ничего личного
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.005 c