x11 Posted December 27, 2020 Share Posted December 27, 2020 Для воспроизведения ошибки нажмите кнопку Append. Я не могу понять, как правильно пользоваться дополнительными TDataModule. Цель такова. Проект гибридный. Поэтому схема такая: две формы (мобильная и десктопная), но модуль данных TDataModule хочу, чтобы был один, в нем так же будут и какие-то общие одинаковые функцции и процедуры, например, функции удаления/добавления данных. Ведь таблицы, поля, SQL-запросы совершенно одинаковы что для мобильной части, что для декстопной. Нет смысла плодить наборы данных (TDataSet). Если от сетки uniDBGrid отвязать набор данных FDQuery, то ошибки нет. тестовый проект https://files.dp.ua/ru/U9CB Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 27, 2020 Share Posted December 27, 2020 43 minutes ago, x11 said: как правильно пользоваться дополнительными TDataModule. ? Quote Link to comment Share on other sites More sharing options...
x11 Posted December 27, 2020 Author Share Posted December 27, 2020 Я так понял, вы test-case не смотрели? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 27, 2020 Share Posted December 27, 2020 8 minutes ago, x11 said: Я так понял, вы test-case не смотрели? Простите, нет еще. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 27, 2020 Share Posted December 27, 2020 15 minutes ago, x11 said: Я так понял, вы test-case не смотрели? А если отключить BufferedStore? Quote Link to comment Share on other sites More sharing options...
x11 Posted December 27, 2020 Author Share Posted December 27, 2020 Да, в таком случае ошибки нет. Но это не лучшее решение проблемы Quote Link to comment Share on other sites More sharing options...
x11 Posted December 27, 2020 Author Share Posted December 27, 2020 Еще вариант - это использовать DisableControls/EnableControls с последующим переоткрытием набора данных qGroups.DisableControls; qGroups.Append; qGroupsNAME.Value := AText; qGroups.Post; if qGroups.UpdateTransaction.Active then qGroups.UpdateTransaction.Commit; qGroups.EnableControls; qGroups.Close; qGroups.Open; Quote Link to comment Share on other sites More sharing options...
x11 Posted December 28, 2020 Author Share Posted December 28, 2020 При включенном свойстве BufferedStore еще одна проблема - при удалении записей. Сетка как бы теряет связь то ли с источником данных (TDataSource), то ли з набором данных (TDataSet). И сетки (uniDBGrid) нет визуального эффекта, что запись выбрана, т.е. щелкаешь по сетке и ничего не происходит - запись не выбирается. Т.е. после удаления я щелкаю по сетке, но в наборе данных позиция DB-курсора не меняется. Я даже добавил событие, чтобы убедиться: procedure TfrdRefUsersRights.dbgGroupSelectionChange(Sender: TObject); begin StatusBar.Panels[0].Text := dmRefUsersRights.qGroupsNAME.Value; end; но после удаления записи в панели статуса StatusBar всё время один и тот же текст, который был до удаления. При этом переоткрытие набора данных (close/open) не помогает. процедура удаления: procedure TfrdRefUsersRights.ACallBackGroupDel(Sender: TComponent; AResult: Integer); begin if AResult = mrNo then exit; dmRefUsersRights.qGroups.Delete;// DELETE FROM GROUPS WHERE ID = :Old_ID if dmRefUsersRights.qGroups.UpdateTransaction.Active then dmRefUsersRights.qGroups.UpdateTransaction.Commit; dmRefUsersRights.qGroups.Close; dmRefUsersRights.qGroups.Open; end; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.