Delphi: Работа с SQL, закладка
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
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);
|
|
|
RE: Delphi: Работа с SQL, закладка - 2008-04-18 13:40:16.083333
|
|
|
dos 999
Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
|
bookmark тут раюотать не будет… т.к. дата сет обнавляеться букмарки меняються. допустим есть у тебя какое нить уникальное поле в запросе… ну например ID… делаешь так:
var
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 который запомнили
|
|
|
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? Тогда почему не воспользоваться стандартным механизмом?
|
|
|
|
|