Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закладка при выполнении SQL [D7, XP]


SveTT ©   (2008-01-24 01:20:00) 

Здравствуйте!

Подскажите. пожалуйста, как возможно создать "bookmark" перед выполнением SQL запроса с тем, чтобы после выполнения вернуть курсор на закладку?

/FreeBookmark
GetBookmark
GotoBookmark/


ASoft   (2008-01-24 15:34:00) [1]

>SveTTT
Однако, я думал вы однозначно поймете, что я имел в виду ID - U>уникальный идентификатор записи...
Запомнить запись вы хотели перед выполнением SQL запроса
а судя по этому:

> есть возможность после выполнения перейти на max значение
> по полю ID.

- после


clickmaker   (2008-01-24 13:45:00) [2]


> [10] SveTTT   (24.01.08 10:43)
> Извиняюсь, спешила, одной рукой кормлю ребенка, другой пишу

"Одной рукой пишу тебе письмо, другой - думаю о тебе" (c)
:)


Sergey13   (2008-01-24 13:42:00) [3]

> [15] SveTTT   (24.01.08 13:30)
> можно же использовать локейт и по ID_I?

Можно и по нему, если ты сама рулишь его значением.
Повторюсь, изменяя данные методами датасета ничего не надо будет делать вообще для позиционирования.


SveTTT   (2008-01-24 13:30:00) [4]


> А просто ID (т.е. поле, которое является первичным ключом)
> у тебя есть?

конечно.
Хронологию отслеживат (у меня) ID_I.
Чтобы не менять структуру базы, можно же использовать локейт и по ID_I?


Sergey13   (2008-01-24 11:59:00) [5]

> [10] SveTTT   (24.01.08 10:43)

+ к
> [11] Sergey13 ©   (24.01.08 10:47)
и
> [12] Sergey13 ©   (24.01.08 10:53)

Если вставлять записи не отдельными запросами, а методами датасета, то вообще не придется переоткрывать его и перепозиционироваться. Это, ИМХО, самое правильное решение.


MsGuns   (2008-01-24 11:52:00) [6]

>SveTTT   (24.01.08 10:43) [10]
>Извиняюсь, спешила, одной рукой кормлю ребенка, другой пишу.

Уважаю ;)


Sergey13   (2008-01-24 10:53:00) [7]

> [10] SveTTT   (24.01.08 10:43)

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


Sergey13   (2008-01-24 10:47:00) [8]

> [10] SveTTT   (24.01.08 10:43)
> База Парадокс

Сочувствую.

> После UPDATE это значение получает ID_I - 4002

А просто ID (т.е. поле, которое является первичным ключом) у тебя есть?


SveTTT   (2008-01-24 10:43:00) [9]

Извиняюсь, спешила, одной рукой кормлю ребенка, другой пишу.
База Парадокс. Что делаю: вставляю или изменяю данные посредством запроса в парадоксовской таблице, после INSERT или UPDATE   ID_I   изменяемого значения, получает новый ID_I по порядку возрастания. (пример: последнее значение ID_I - 4001. Редактирую значение ID_I  3728. После UPDATE это значение получает ID_I - 4002. т.е.  ID_I   указывает, что это значение было отредактированно последним или является новым). Мне нужно, чтобы курсор в гриде оставался на значении с ID_I  равное 4002. (по примеру).


Sergey13   (2008-01-24 09:56:00) [10]

> [8] SveTTT   (24.01.08 09:34)
> я ошиблась, у меня не ID, а ID_I.

Ты ошиблась не только в этом.
Ты НЕ указала СУБД, которую мучаешь. Ты НЕ рассказала, что и как конкретно делаешь и почему у тебя "после INSERT или UPDATE мой "ID"  меняется на больший".


SveTTT   (2008-01-24 09:34:00) [11]

я ошиблась, у меня не ID, а ID_I.
ПЕРВЫЙ И ПОСЛЕДНИЙ не подходит, т.к сортировка грида выполнена по другим полям, а меня интересует только курсор на значении равное максимальному ID_I.


MsGuns   (2008-01-24 09:10:00) [12]

>SveTTT   (24.01.08 08:09) [5]
>ID нельзя запомнить т.к. после INSERT

После вставки новый ID должен быть извлечен доп.командой серверу - по нему и надо искать запись в переоткрытом нд

>при UPDATE мой "ID" меняется на больший.

У вас какой-то неправильный ID


Skyle   (2008-01-24 08:14:00) [13]


> SveTTT   (24.01.08 08:09) [5]
> Спасибо, за разъяснение.
>
> > - запомнить в переменную `ID`
> > - после выполнения запроса попробовать найти Locate'ом
>
> ID нельзя запомнить т.к. после INSERT или UPDATE мой "ID"
> меняется на больший.
> Но, ... ;-) м.б. есть возможность после выполнения перейти
> на max значение по полю ID.

Id записи должен быть вечным. Просто в какой-то момент он может быть неизвестен.

А перейти на макс можно: отсортировать и перейти на последнюю (первую) запись.


SveTTT   (2008-01-24 08:09:00) [14]

Спасибо, за разъяснение.

> - запомнить в переменную `ID`
> - после выполнения запроса попробовать найти Locate'ом

ID нельзя запомнить т.к. после INSERT или UPDATE мой "ID" меняется на больший.
Но, ... ;-) м.б. есть возможность после выполнения перейти на max значение по полю ID.


ASoft   (2008-01-24 07:11:00) [15]


> SveTT   (24.01.08 01:20)

как вариант (если я правильно понял вопрос)
- запомнить в переменную `ID`
- после выполнения запроса попробовать найти Locate'ом


Германн   (2008-01-24 01:35:00) [16]


> SveTT   (24.01.08 01:20)
>
> Здравствуйте!
>
> Подскажите. пожалуйста, как возможно создать "bookmark"
> перед выполнением SQL запроса с тем, чтобы после выполнения
> вернуть курсор на закладку?
>

А задачу можешь изложить? Поскольку хотя Сергей М. ©   (24.01.08 01:27) [1] абсолютно прав, но как говорится возможны варианты.


Сергей М.   (2008-01-24 01:27:00) [17]

Никак.

Интересующая тебя закладка есть, по сути, адрес в памяти приложения, где находятся данные записи из текущегоНД.

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


Сергей М.   (2008-01-24 01:27:00) [18]

Никак.

Интересующая тебя закладка есть, по сути, адрес в памяти приложения, где находятся данные записи из текущегоНД.

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо