Конференция "Базы" » Слетает курсор при редактировании записи. Delphi 7 + Fibplus 6.99 [D7]
 
  • Aleks127 (27.08.14 12:26) [0]
    При редактировании записи слетает рандомно курсор на совершенно другую запись. Подскажите как решить проблему, так чтобы после редактирования курсор оставался на той же записи?

    Использую: Delphi 7, Fibplus 6.99, Firebird 2.5.2
  • junglecat (27.08.14 14:05) [1]
    откуда слетает?
  • Aleks1241 (27.08.14 15:31) [2]
    Я имею ввиду выделенную запись в DBGrid'e. То есть например если я редактирую строку с фамилией Иванов, то после редактирования курсор перескакивает на Сидорова.
  • junglecat (27.08.14 15:52) [3]
    так надо запоминать текущую запись
    GetBookmark/GotoBookmark, либо Locate по ключу
  • Inovet © (27.08.14 15:54) [4]
    > [3] junglecat   (27.08.14 15:52)
    > так надо запоминать текущую запись

    Для редактирования в гриде?
  • junglecat (27.08.14 15:55) [5]
    ну хочет человек редактировать в гриде, что же поделаешь?
  • Inovet © (27.08.14 15:56) [6]
    Скорее всего в обработчиках событий типа AfterEdit делаются проверки по этому же датасету, которые и смещают указатель.
  • junglecat (27.08.14 15:58) [7]
    да вообще хз, что там происходит. Это опять же из серии про стук в подвале
  • Inovet © (27.08.14 15:58) [8]
    > [6] Inovet ©   (27.08.14 15:56)

    Такой подход, разумеется, неправильный, хоть с запоминанием букмарка, хоть без него.
  • Inovet © (27.08.14 15:58) [9]
    > [5] junglecat   (27.08.14 15:55)
    > ну хочет человек редактировать в гриде, что же поделаешь?

    Само редактирование в гриде к такому не должно приводить.
  • Aleks1241 (27.08.14 16:06) [10]
    Редактирование происходит в отдельной форме. Пример кода:

    procedure TEditClientForm.btnOkClick(Sender: TObject);
    begin  
    MainDataModule.fibdsClient.Edit;
     MainDataModule.fibdsClientSURNAME.AsString:=    lbledtSurname.Text;
    MainDataModule.fibdsClient.Post;
       EditClientForm.Close;

    end;

    после Закрытия формы редактирования, указатель находится не на той записи которую отредактировали ,а  совершенно на другой  в DBGrid.
  • junglecat (27.08.14 16:07) [11]
    и у fibdsClient нет обработчиков AfterEdit, AfterPost? и fibdsClient не переоткрывается после закрытия формы?
  • Aleks1241 (27.08.14 16:13) [12]

    > и у fibdsClient нет обработчиков AfterEdit, AfterPost? и
    > fibdsClient не переоткрывается после закрытия формы?


    У fibdsClient стоит значение True в опции poRefreshAfterPost . То есть После Post срабатывает Refresh.
  • junglecat (27.08.14 16:16) [13]
    > То есть После Post срабатывает Refresh

    ну я не знаю, как там в жарптице рефреш работает, но видимо придется запоминать ключ - ID - и делать Locate туда после рефреша
  • Sergey13 © (29.08.14 09:43) [14]
    И для этого
    >MainDataModule.fibdsClient.Edit;
    >  MainDataModule.fibdsClientSURNAME.AsString:=    lbledtSurname.Text;
    >MainDataModule.fibdsClient.Post;
    рисовать отдельную форму? Построчная/поформенная оплата?
  • Inovet © (29.08.14 10:38) [15]
    > [14] Sergey13 ©   (29.08.14 09:43)

    Меня больше смущает то, что общий датамодуль с датасетом для редактирования из разных (?) форм. Ну а так — да, если это не просто тестовая форма.
 
Конференция "Базы" » Слетает курсор при редактировании записи. Delphi 7 + Fibplus 6.99 [D7]
Есть новые Нет новых   [118665   +33][b:0][p:0.001]