Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Вниз

ODAC/ запомнить и восстановить текущее положение в dataset   Найти похожие ветки 

 
12 ©   (2010-03-23 16:26) [0]

Как можно запомнить и восстановить текущее положение в dataset?
Пытаюсь избавится от последствий Refresh, которое использую
для отображения внесенных только что записей

А после refresh текущей становится в общем случае другая запись.

Можно: Запомнить запись, Refresh, отыскать ее, сделать текущей

Не работал с ODAC вообще, может как-то по-другому проще?


 
Медвежонок Пятачок ©   (2010-03-23 16:38) [1]

стандартно. букмарками.


 
Sergey13 ©   (2010-03-23 16:39) [2]

> [0] 12 ©   (23.03.10 16:26)

Вноси данные через датасет - ничего рефрешить не надо.


 
12 ©   (2010-03-23 16:57) [3]

понятно.
просто там гораздо больше св-в у TOraххх чем у TADOххх
думал что-то есть такое


 
Правильный$Вася   (2010-03-24 00:27) [4]


> стандартно. букмарками.

фигня
букмарк после переоткрытия датасета в общем случае инвалидный

locate по первичному ключу в датасете


 
Медвежонок Пятачок ©   (2010-03-24 09:16) [5]

этот общий случай происходит раз в тысячу лет.
у меня букмарки всю дорогоу были валидны.

кроме того, никто не запрещает делать проверку избукмарквалид.
и если валид, то делать гоуту букмарк.


 
Anatoly Podgoretsky ©   (2010-03-24 10:25) [6]

> Медвежонок Пятачок  (24.03.2010 09:16:05)  [5]

В рубашке родился


 
Правильный$Вася   (2010-03-24 10:26) [7]


> у меня букмарки всю дорогоу были валидны.

значит тебе везет
ибо это всего лишь адрес из той области памяти, которую занимали данные до переоткрытия датасета
и нет никаких гарантий, что после переокрытия данные не окажутся в другой области памяти или по этому адресу будут другие данные


 
sniknik ©   (2010-03-24 10:32) [8]

> кроме того, никто не запрещает делать проверку избукмарквалид.
> и если валид, то делать гоуту букмарк.
зачем усложнять если можно просто
> locate по первичному ключу в датасете


 
Медвежонок Пятачок ©   (2010-03-24 10:53) [9]

а потому что.

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


 
Anatoly Podgoretsky ©   (2010-03-24 11:37) [10]

> Медвежонок Пятачок  (24.03.2010 10:53:09)  [9]

Код с Locate даже короче и проще чем с букмарк


 
Правильный$Вася   (2010-03-24 11:39) [11]


> Медвежонок Пятачок ©   (24.03.10 10:53) [9]

а потом самолеты падают
и все потому, что кое-кто слишком боится перетрудиться

кстати, ТПервичныйКлюч ненамного сложнее ТБукмарк для использования в библиотеке


 
Медвежонок Пятачок ©   (2010-03-24 12:09) [12]

объединение из трех таблиц.
присутствуют первичные ключи из всех трех.
все три ключа составные.

достаньте список колонок по которым надо делать локейт.

я понимаю, что это (как и все остальное) не намного сложнее чем букмарк.


 
Правильный$Вася   (2010-03-24 12:49) [13]


> объединение из трех таблиц.
> присутствуют первичные ключи из всех трех.

и чо? все три первичных ключа таблиц дают первичный ключ набора данных
если нет, то обрабатывать это бессмыссленно - плохое проектирование

> все три ключа составные.

и чо? ломает, что ли?

> достаньте список колонок по которым надо делать локейт.

и чо? 10 колонок с их значениями трудно запихать в класс ТПервичныйКлюч и обработать в библиотеке?

> я понимаю, что это (как и все остальное) не намного сложнее чем букмарк.

это РЕАЛЬНО так

как говорится: "кто хочет - ищет способы, кто не хочет - ищет причины"


 
12 ©   (2010-03-24 14:15) [14]

TBookmark заюзал
не самолеты пишу, а собьется раз в пятилетку - фиг с ним


 
MsGuns ©   (2010-03-24 16:43) [15]

За рекомендацию пользоваться букмарками при переоткрытии датасета медвежонку надо по тятачку
:)


 
Правильный$Вася   (2010-03-24 17:29) [16]


> собьется раз в пятилетку - фиг с ним

это рулетка
и далеко не всем в ней везет
иногда и застрелиться случайно можно

> MsGuns ©   (24.03.10 16:43) [15]

симметричное клеймо с противоположной стороны поставить, чтоб всем видно было, куда метить


 
Медвежонок Пятачок ©   (2010-03-24 18:33) [17]

и чо? все три первичных ключа таблиц дают первичный ключ набора данных
если нет, то обрабатывать это бессмыссленно - плохое проектирование


Речь шла о библиотечной функции, которая восстанавливает позицию в датасете после рефреша.

То есть это случай, когда библиотечная функция ничего не знает о конкретном датасете.

Я и говорю.
В датасете три таблицы со своими первичными ключами.
у всех они составные.

Вы ничего внутри функции не знаете о датасете.

Получите список имен полей праймари кеев, который будут заюзаны в вашем локейте.

В моем случае я сделаю гетбукмарк, затем проверю его на нил и проверю на букмарквалид. Если все ок, сделаю гоутубукмарк.

А что сделаете вы?


 
Игорь Шевченко ©   (2010-03-24 19:00) [18]


> Как можно запомнить и восстановить текущее положение в dataset?
>
> Пытаюсь избавится от последствий Refresh, которое использую
>
> для отображения внесенных только что записей


что-то не так в консерватории.


 
MsGuns ©   (2010-03-24 19:19) [19]

>Медвежонок Пятачок ©   (24.03.10 18:33) [17]
>То есть это случай, когда библиотечная функция ничего не знает о >конкретном датасете.

А что, собсна, она ДОЛЖНА знать ?


 
MsGuns ©   (2010-03-24 19:22) [20]

К комментариям-"отмазкам" Медвежонка:

Если НД РЕДАКТИРУЕТСЯ, то, надо полагать, редактируется ОДНА таблица, а не несколько (иначе - "старуха с клюкой" (с))
А если таблица ОДНА, то и с идентификаторм проблем быть не должно.


 
Медвежонок Пятачок ©   (2010-03-24 20:15) [21]

А что, собсна, она ДОЛЖНА знать ?

Да ничего.
Есть TDataSet
Нужно закрыть его и открыть. После чего восстановить текущую запись которая была перед закрытием


 
Игорь Шевченко ©   (2010-03-24 20:44) [22]


> После чего восстановить текущую запись которая была перед
> закрытием


В общем случае невозможно. Ее могут удалить


 
MsGuns ©   (2010-03-24 20:58) [23]

>Медвежонок Пятачок ©   (24.03.10 20:15) [21]
>После чего восстановить текущую запись которая была перед закрытием

Е-е-ето как ето ?


 
Медвежонок Пятачок ©   (2010-03-24 21:14) [24]

В общем случае невозможно. Ее могут удалить

Ядерного взрыва не произойдет.
Либо букмарквалид будет false, либо датасет отпозиционируется не совсем туда куда хотелось бы.
Так как сама фича из области бантиков и рюшечек, на приложение это никак не повлияет. Ткнет юзер мышкой куда ему надо если курсор не там где он ожидает. И все.


 
Медвежонок Пятачок ©   (2010-03-24 21:15) [25]

Е-е-ето как ето ?

Это встать курсором на ту же запись, на которой стоял курсор перед рефрешем датасета.


 
Игорь Шевченко ©   (2010-03-24 21:22) [26]

Медвежонок Пятачок ©   (24.03.10 21:14) [24]


> Ядерного взрыва не произойдет.


Не произойдет.


> Либо букмарквалид будет false


А откуда оно узнает, false ему надо становиться или не false ?


> Ткнет юзер мышкой куда ему надо если курсор не там где он
> ожидает. И все.


Мы из этих соображений не позиционируемся на последнюю запись, где оно стояло. Обновляет пользователь, так обновляет, сам, его никто не заставляет, поэтому попадает на начало Dataset-а.


 
Медвежонок Пятачок ©   (2010-03-24 21:34) [27]

А откуда оно узнает, false ему надо становиться или не false ?

узнает через метод датасета.

Честно говоря вообще не догоняю из чего весь сыр бор.
Я этот метод применял на всем от парадокса до оракла и от бдешных tquery до одаковских ораквери.

Везде это работало. Везде.

Если я и не применял эту фичу, то не потому что не работало, а потому что либо это было ненужно, либо излишне напрягало сервер.


 
MsGuns ©   (2010-03-24 22:58) [28]

Сыр-бор оттого, что при редактировании в гриде нехило б было сделать юзеру банально приятно,- чтоб он после завершения редактирования (вставки, удаления) записи не терял то место, где он редактировал. Желание, кстати, вполне понятное, вопреки мнению некоторых тут. В самом деле, представьте, что после вставки в исходник новой строки вас перебрасывали бы в начало кода :)

Твой метод работает в случае, если таблица на все время редактирования не изменяется более никем

Закладываться на метод, работающий только "по погоде" - это подставить юзера. Причем, как обычно, "глюк" вылезет в самый неподходящий момент.
Не проще ли сразу делать правильно и надежно, не полагаясь на пресловутое "я так всегда делал - и ничего" ?


 
Медвежонок Пятачок ©   (2010-03-25 01:27) [29]

правильно и надежно - это кто вообще определил?
редактируем запись.
меняем значения полей.
в том числе возможно и ключевых.
и чем локейт в этом случае правильнее букмарка?


 
Anatoly Podgoretsky ©   (2010-03-25 05:21) [30]

> Медвежонок Пятачок  (24.03.2010 21:14:24)  [24]

После позиционирования куда не надо, произойдет редактирование чего не надо.


 
Anatoly Podgoretsky ©   (2010-03-25 05:23) [31]

> Медвежонок Пятачок  (25.03.2010 01:27:29)  [29]

Тем что правильно работает.


 
Медвежонок Пятачок ©   (2010-03-25 09:19) [32]

ну да, правильно.
локейт вернул файлсе потому что юзер отредактировал праймари кей и это правильно.


 
MsGuns ©   (2010-03-25 09:53) [33]

>Медвежонок Пятачок ©   (25.03.10 09:19) [32]
>локейт вернул файлсе потому что юзер отредактировал праймари кей и это правильно.

Если редактируется праймари, то это и есть "старуха с клюкой".
Использование UID поможет предводителю дворянства


 
Медвежонок Пятачок ©   (2010-03-25 10:06) [34]

то есть естественные праймари кей не имеют права на существование?


 
MsGuns ©   (2010-03-25 10:35) [35]

Я бы не смешивал понятие "праймари" (первичный) и "нативный" (естественный, сущностный)


 
Медвежонок Пятачок ©   (2010-03-25 11:02) [36]

и я не смешиваю.
праймари кей может редактироваться.
особенно если он естественный а не искусственный


 
Правильный$Вася   (2010-03-25 13:03) [37]


> праймари кей может редактироваться.

может, конечно
но не пользователем

и нахрен не нужен натуральный первичный ключ из 2 десятков полей

короче, проще 10 лет облеплять кизяком стену, чтоб не упала, чем за месяц построить новую, так?


 
Игорь Шевченко ©   (2010-03-25 14:01) [38]


> и нахрен не нужен натуральный первичный ключ из 2 десятков
> полей


почему это ?


 
MsGuns ©   (2010-03-25 14:34) [39]

Можно, конечно, использовать в качестве первичного нативные реквизиты.
На простых структурах. Но в "этажерках" такая технология приводит к многочисленным проблемам, связанным с необходимостью после изменения ключа в мастере править в дочерних таблицах поля-связки.
Или я не верно понимаю политику партии и правительства ?


 
Правильный$Вася   (2010-03-25 18:17) [40]


> Игорь Шевченко ©   (25.03.10 14:01) [38]

потому что кроме гипотетической экономии памяти никаких плюсов больше нет
да и в сторону мы уходим, это уже десятки раз перетирали и каждый остался при своем
я предпочитаю суррогатные первичные ключи, а то, что может претендовать на натуральный первичный ключ, просто делаю уником
гораздо гибче во многих случаях - можно и на то опереться, и на это, зависит от логики конкртной задачи
и даже если вдруг окажется, что натуральный ключ уже не совсем ключ, ничего не развалится, в отличие от противников суррогата



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.005 c
1-1278075174
ifmomax
2010-07-02 16:52
2012.01.01
Windows-service.Некорректное чтение бинарного файла.


3-1269443878
gog
2010-03-24 18:17
2012.01.01
Не читаются unicode данные


2-1316690831
Laguna
2011-09-22 15:27
2012.01.01
Позиционирование в Combobox по значению объекта


2-1316878318
Gu
2011-09-24 19:31
2012.01.01
перечисляемые типы


2-1316988773
Krema
2011-09-26 02:12
2012.01.01
Иероглифы в справке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский