|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Обновление данных в DBGrid и фокус строки
После внесения изменения в БД нужно обновить их в DBGrid, но при обновлении через
Код:
Form2.Query3.Active:=false; Form2.Query3.Active:=true; Возможно ли сделать чтобы он только обновил данные в выделенной строке или как вернутся к той строке снова. |
#2
|
||||
|
||||
Закладки спасут гиганта мысли.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Есть такая штука в большинстве БД, называется Bookmark. Цель их использования, пометить некоторую позицию в БД, а затем вернуться к ней.
Делается крайне просто. Вот пример из хэлпа: Код:
procedure DoSomething (const Tbl: TTable) var Bookmark: TBookmark; begin Bookmark := Tbl.GetBookmark; { Allocate memory and assign a value } Tbl.DisableControls; { Turn off display of records in data controls } try Tbl.First; { Go to first record in table } while not Tbl.Eof do {Iterate through each record in table } begin { Do your processing here } . . . Tbl.Next; end; finally Tbl.GotoBookmark(Bookmark); Tbl.EnableControls; { Turn on display of records in data controls, if necessary } Tbl.FreeBookmark(Bookmark); {Deallocate memory for the bookmark } end; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
проблемку решил - подсказали как исползовать букмарки и локейты.
кому интересено вот код предоставленный soleil@mmc Код:
var MyBookMark: TBookmark; begin MyBookMark:= Form2.Query3.GetBookmark; .... Query1.Active := false; Query1.SQL.clear; Query1.SQL.add('update place set ....'); Query1.ExecSQL; .... Form2.Query3.DisableControls; Form2.Query3.Active:=false; Form2.Query3.Active:=true; Form2.Query3.GotoBookmark(MyBookMark); Form2.Query3.EnableControls; Form2.Query3.FreeBookMark(MyBookMark); end; Код:
var l_pk_value: integer; begin l_pk_value::= Form2.Query3.FieldByName('your_pk_field_name').AsInteger; .... Query1.Active := false; Query1.SQL.clear; Query1.SQL.add('update place set ....'); Query1.ExecSQL; .... Form2.Query3.DisableControls; Form2.Query3.Active:=false; Form2.Query3.Active:=true; Form2.Query3.Locate('your_pk_field_name', l_pk_value, []); Form2.Query3.EnableControls; end; поначалу просто непонял что искать... |