-
При редактировании записи слетает рандомно курсор на совершенно другую запись. Подскажите как решить проблему, так чтобы после редактирования курсор оставался на той же записи?
Использую: Delphi 7, Fibplus 6.99, Firebird 2.5.2
-
откуда слетает?
-
Я имею ввиду выделенную запись в DBGrid'e. То есть например если я редактирую строку с фамилией Иванов, то после редактирования курсор перескакивает на Сидорова.
-
так надо запоминать текущую запись
GetBookmark/GotoBookmark, либо Locate по ключу
-
> [3] junglecat (27.08.14 15:52)
> так надо запоминать текущую запись
Для редактирования в гриде?
-
ну хочет человек редактировать в гриде, что же поделаешь?
-
Скорее всего в обработчиках событий типа AfterEdit делаются проверки по этому же датасету, которые и смещают указатель.
-
да вообще хз, что там происходит. Это опять же из серии про стук в подвале
-
> [6] Inovet © (27.08.14 15:56)
Такой подход, разумеется, неправильный, хоть с запоминанием букмарка, хоть без него.
-
> [5] junglecat (27.08.14 15:55)
> ну хочет человек редактировать в гриде, что же поделаешь?
Само редактирование в гриде к такому не должно приводить.
-
Редактирование происходит в отдельной форме. Пример кода:
procedure TEditClientForm.btnOkClick(Sender: TObject);
begin
MainDataModule.fibdsClient.Edit;
MainDataModule.fibdsClientSURNAME.AsString:= lbledtSurname.Text;
MainDataModule.fibdsClient.Post;
EditClientForm.Close;
end;
после Закрытия формы редактирования, указатель находится не на той записи которую отредактировали ,а совершенно на другой в DBGrid.
-
и у fibdsClient нет обработчиков AfterEdit, AfterPost? и fibdsClient не переоткрывается после закрытия формы?
-
> и у fibdsClient нет обработчиков AfterEdit, AfterPost? и
> fibdsClient не переоткрывается после закрытия формы?
У fibdsClient стоит значение True в опции poRefreshAfterPost . То есть После Post срабатывает Refresh.
-
> То есть После Post срабатывает Refresh
ну я не знаю, как там в жарптице рефреш работает, но видимо придется запоминать ключ - ID - и делать Locate туда после рефреша
-
И для этого
>MainDataModule.fibdsClient.Edit;
> MainDataModule.fibdsClientSURNAME.AsString:= lbledtSurname.Text;
>MainDataModule.fibdsClient.Post;
рисовать отдельную форму? Построчная/поформенная оплата?
-
> [14] Sergey13 © (29.08.14 09:43)
Меня больше смущает то, что общий датамодуль с датасетом для редактирования из разных (?) форм. Ну а так да, если это не просто тестовая форма.