Я занимаюсь разработкой программного обеспечения, которое отображает информацию в DBGrid
через TSimpleDataSet
(компоненты DBEXPRESS)Auto обновить TDataSet/DBGrid
Программное обеспечение в вопросе используется на 2 разных компьютерах 2 разных людей.
Они оба видят и редактируют одну и ту же информацию в разное время. Я пытаюсь выяснить способ автоматического обновления DBGrid
(вернее, DataSet
, справа?) На компьютере B, как только компьютер A изменит строку (редактирует что-то/что угодно) и наоборот.
В настоящее время я установил вверх TButton
по имени Refresh
, что когда-то щелкнул выполняет следующий код:
procedure TForm2.actRefreshDataExecute(Sender: TObject);
begin
dbmodule.somenameDataSet.MergeChangeLog;
dbmodule.somenameDataSet.ApplyUpdates(-1);
dbmodule.somenameDataSet.Refresh;
dbmodule.somename1DataSet.MergeChangeLog;
dbmodule.somename1DataSet.ApplyUpdates(-1);
dbmodule.somename1DataSet.Refresh;
dbmodule.somename2DataSet.MergeChangeLog;
dbmodule.somename2DataSet.ApplyUpdates(-1);
dbmodule.somename2DataSet.Refresh;
dbmodule.somename3DataSet.MergeChangeLog;
dbmodule.somename3DataSet.ApplyUpdates(-1);
dbmodule.somename3DataSet.Refresh;
end;
Это нормально и работает, как задумано, один раз нажал. Я хотел бы воспользоваться функцией автоматического обновления для этого, например, когда Computer A редактирует информацию в строке, компьютер B DBGrid
должен обновить его отображение соответственно, без необходимости нажатия кнопки обновления.
Я понял, что буду использовать TTimer
и установить его в определенный промежуток времени на обоих программах на обоих ПК.
Мой фактический вопрос:
Есть ли лучший способ, чем TTimer
для этого? Если да, пожалуйста, уточните. Кроме того, если TTimer
маршрута путь дальнейших данные могут оказаться полезными для государства будет оценен (за и против, и так далее)
Я использую RAD Studio 10 в Сиэтле и dbExpress
компонентов, наборы данных подключитесь к базе данных MySQL на моем хостинге, где находится мой сайт.
Спасибо!
Конечно, лучший способ должен быть уведомлен сервером базы данных. Для этого сервер базы данных, если он есть, должен предоставить такую функциональность, а также драйвер доступа должен его поддерживать. DBX, вероятно, не будет, но должно быть возможно использовать вспомогательное соединение. Как и IBEventAlerter, например, для interbase/firebird. –
Почему это было бы лучше, чем против таймера? Просто из любопытства. Кроме того, я использую MySQL и да, наборы данных подключены к базе данных. – Petzy
Ваша программа не должна забивать сервер ни для чего так часто. Вероятно, 99 процентов ваших обновлений будут возвращены с пустыми руками. Если вы растянете интервал, чтобы избежать этого, вы рискуете не уведомлять об изменении. –