Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Delphi: Работа с SQL, закладка

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Delphi: Работа с SQL, закладка
Имя
Сообщение << Старые топики   Новые топики >>
Delphi: Работа с SQL, закладка - 2008-04-17 19:21:51.070000   
jestki

Сообщений: 3
Оценки: 0
Присоединился: 2008-02-10 18:47:54.656666
Как сделать что бы после добавления записи и выполнения моего sql запросв снизу, курсор оставался на записи откуда запустили.
Код снизу с букмаками не работает?


// Сделать закладку
//my_bookmark := DM.Q_Contacs_Comm.GetBookmark;

// Запрос SQL
DM.Q_Contacs_Comm.Close;
DM.Q_Contacs_Comm.SQL.Clear;
DM.Q_Contacs_Comm.SQL.Add('select * from db_contacts_comm');
DM.Q_Contacs_Comm.SQL.Add('where key2='+inttostr(dm.Q_Contacskey.AsInteger));
DM.Q_Contacs_Comm.SQL.Add('order by s_comm_type');
DM.Q_Contacs_Comm.open;

// Востановить закладку
DM.Q_Contacs_Comm.GotoBookmark(my_bookmark);
DM.Q_Contacs_Comm.FreeBookmark(my_bookmark);
Post #: 1
RE: Delphi: Работа с SQL, закладка - 2008-04-18 13:40:16.083333   
dos 999

Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
bookmark тут раюотать не будет… т.к. дата сет обнавляеться букмарки меняються.

допустим есть у тебя какое нить уникальное поле в запросе… ну например ID… делаешь так:
var &nbsp;&nbsp;&nbsp; i: integer; ... i := DM.Q_Contacs_Comm.FieldByName('ID').AsInteger;//запоминаем ID записи DM.Q_Contacs_Comm.Close; DM.Q_Contacs_Comm.SQL.Clear; DM.Q_Contacs_Comm.SQL.Add('select * from db_contacts_comm'); DM.Q_Contacs_Comm.SQL.Add('where key2='+inttostr(dm.Q_Contacskey.AsInteger)); DM.Q_Contacs_Comm.SQL.Add('order by s_comm_type'); DM.Q_Contacs_Comm.open; DM.Q_Contacs_Comm.Locate('ID', i, []);//возвращаемся на ID который запомнили
Post #: 2
RE: Delphi: Работа с SQL, закладка - 2008-04-19 00:45:49.683333   
alexbozhko

Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34

quote:

ORIGINAL: jestki

Как сделать что бы после добавления записи и выполнения моего sql запросв снизу, курсор оставался на записи откуда запустили.
Код снизу с букмаками не работает?


// Сделать закладку
//my_bookmark := DM.Q_Contacs_Comm.GetBookmark;

// Запрос SQL
DM.Q_Contacs_Comm.Close;
DM.Q_Contacs_Comm.SQL.Clear;
DM.Q_Contacs_Comm.SQL.Add('select * from db_contacts_comm');
DM.Q_Contacs_Comm.SQL.Add('where key2='+inttostr(dm.Q_Contacskey.AsInteger));
DM.Q_Contacs_Comm.SQL.Add('order by s_comm_type');
DM.Q_Contacs_Comm.open;

// Востановить закладку
DM.Q_Contacs_Comm.GotoBookmark(my_bookmark);
DM.Q_Contacs_Comm.FreeBookmark(my_bookmark);

Сдается ты не совсем правильно делаешь.
Вернее, не совсем рационально.
Во первых, если обновляешь набор данных - используй параметры, а не такие конструкции
('where key2='+inttostr(dm.Q_Contacskey.AsInteger));

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

Тут не совсем ясно, ты из контекста пример выдрал.
То что букмарки работать не будут, ввиду причины, указанной предыдущим оратором - очевидно.
Но что ты хочешь сделать?
Просто связку Master-Details?
Тогда почему не воспользоваться стандартным механизмом?


Post #: 3
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Delphi: Работа с SQL, закладка







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.