![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Позиционировать курсор после удаления и переоткрытия DS [D7]
OW © (2011-03-17 15:29:00)oracle, ODAC, компонента TSmartQuery
В таблице сказано
CREATE TABLE "ISS"."PRICE"
( "ID_PRICE" NUMBER NOT NULL ENABLE,
"ID_CONTRACT" NUMBER NOT NULL ENABLE,
"DATE_RELEVANCE" DATE NOT NULL ENABLE,
...
CONSTRAINT "PK_ID_PRICE" PRIMARY KEY ("ID_PRICE")
Когда я KeyFields в объект инспекторе (ОИ) раскрываю, он мне здоровско предлагает ID_PRICE.
Как он это узнал?
Задача позиционировать курсор. после удаления. Хочу получить KeyFields, до записи, запомнить его значение и locate делать после переоткрытия
Sergey13 (2011-03-18 11:05:00) [1]> [11] OW © (18.03.11 10:16)
Ну так а кто про "переоткрытия DS" начал? 8-)
OW (2011-03-18 10:16:00) [2]если переоткрыть, то да, видятся
вопрос был
>> видно добавленное после ИХ коммита, два.
если не переоткрыть - не видятся
Sergey13 (2011-03-18 10:14:00) [3]> [9] OW © (18.03.11 09:03)
> вот отурылся набор, похимичили с ним, закоммитили. С чего
> там появится то, что добавил другой юзер, и подходящие по
> условию начальной выборки первым юзером?
Ну так если ты его [пере]открыл - почему не появятся то?
OW (2011-03-18 09:03:00) [4]Sergey13 © (17.03.11 16:16) [4]
sniknik © (17.03.11 17:32) [5]
Игорь Шевченко © (17.03.11 20:13) [6]
Спасибо.
> а почему после коммита? когда добавляют, твоего коммита
> не спрашивают, раз, видно добавленное после ИХ коммита,
> два.
не понял
как это видно?
вот отурылся набор, похимичили с ним, закоммитили. С чего там появится то, что добавил другой юзер, и подходящие по условию начальной выборки первым юзером?
> Кщд (18.03.11 07:45) [8]
да, он, наверное.
У нас не программерская контора. Как сказал начальник, "мы не программисты, мы инженеры и предоставляем сервис. Как мы это будем делать - никого не волнует. Хочешь - вручную делай все, круглосуточно, но лучше написать софт, чтоб юзеры сами редактировали".
Мне ничего не сообщалось персонально, но все что открываю написано так.
Просто пишу так же и все
Кщд (2011-03-18 07:45:00) [5]>OW © (17.03.11 15:29)
прошу прощения за оффтоп, но уже в нескольких Ваших топиках заметил, что имена объектов задаются строго в uppercase - чем обусловлено? корп. стиль или?...
Abramov Petr V. (2011-03-17 22:03:00) [6]
> После всех манипуляция с ним, в том числе и если был delete,
> после commita надо переоткрыть, вдруг там еще что добавилось.
>
а почему после коммита? когда добавляют, твоего коммита не спрашивают, раз, видно добавленное после ИХ коммита, два.
> Вопрос как O узнал, какое поле у меня PK
>
по словарю
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_part.htm#i125539
там букаф дофига, но оно увлекательно, интересное/неинтересное сам отфильтруешь.
Игорь Шевченко (2011-03-17 20:13:00) [7]
> Как он это узнал?
спросил у user_constraints
sniknik (2011-03-17 17:32:00) [8]> Может просто первое показал? 8-)
да нет, легко узнается по INFORMATION_SCHEMA (и/или, то же самое использует OpenSchema в ADO)
т.что показывает, что есть.
Sergey13 (2011-03-17 16:16:00) [9]> вдруг там еще что добавилось.
ИМХО порочная практика. На 100% актуальность данных все равно не достижима долее чем на мгновение.
> Вопрос как O узнал, какое поле у меня PK
Может просто первое показал? 8-)
В принципе несложно пошуршать по системным таблицам user_XXX и узнать.
OW (2011-03-17 16:03:00) [10]Как связаны удаление и переоткрытие
DS в состоянии CashedUpdates
После всех манипуляция с ним, в том числе и если был delete, после commita надо переоткрыть, вдруг там еще что добавилось.
все хорошо, если запомнить текущую запись.
-------------
Вопрос не в этом, поздно подумал / рано написал
Вопрос как O узнал, какое поле у меня PK
Sergey13 (2011-03-17 15:57:00) [11]А при чем тут удаление? И если надо удалять при чем тут переоткрытие? Короче как связаны удаление и переоткрытие?
Обычно после удаления указатель встает на следущую запись. Достаточно сделать Prior и желаемое достигнуто.
OW (2011-03-17 15:39:00) [12]procedure TForm1.RefreshWithKeepPos(Q: TSmartQuery);
var
V: Variant;
begin
Q.DisableControls;
Q.Prior;
V := Q.Fields[0].Value;
Q.EnableControls;
Q.Refresh;
Q.Locate(Q.Fields[0].FullName, V, [loCaseInsensitive] );
end;
так тоже работает, т.к. Id всегда первым в запросе делаю
но так не нравится что-то