![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
После внесения изменения в БД нужно обновить их в 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;поначалу просто непонял что искать... |