그들은 서로 다른 시간에 동일한 정보를보고 편집합니다. 컴퓨터 A가 행을 변경 (무언가를 수정하는 경우)하거나 그 반대 인 경우 컴퓨터 B에서 DBGrid
(또는 오히려, 오른쪽)을 자동으로 업데이트하는 방법을 알아 내려고하고 있습니다.
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;
이 괜찮 의도 한대로, 한 번 클릭 작품 :
은 현재 내가 한 번 클릭Refresh
라는
TButton
다음 코드를 실행 설정했습니다. 예를 들어 컴퓨터 A가 행의 정보를 편집 할 때 컴퓨터 B의
DBGrid
이 새로 고침 버튼을 클릭하지 않아도 디스플레이를 업데이트해야하는 경우 자동 업데이트 기능이 필요합니다.
TTimer
을 사용하고 특정 간격으로 PC의 두 소프트웨어에서 모두 설정할 것이라고 생각했습니다.
내 실제 질문은 : 이것에 대한 TTimer
보다 더 좋은 방법은
있습니까? 그렇다면 정교하게 작성하십시오. 또한 의 TTimer
경로 (프로의 양론의 등)
내가 라드 스튜디오 (10) 시애틀과 dbExpress
구성 요소, 데이터 세트를 사용하고 감상 할 수있다 당신이 상태로 유용 할 수있는 추가 정보를 길을 가야하는 경우 내 웹 사이트가있는 내 호스팅에서 MySQL 데이터베이스에 연결하십시오.
감사합니다!
물론 더 좋은 방법은 데이터베이스 서버에 의해 통지하는 것입니다. 이를 위해 데이터베이스 서버가있는 경우 이러한 기능을 제공해야하며 액세스 드라이버도이를 지원해야합니다. DBX는 지원하지 않지만 보조 연결을 사용할 수 있어야합니다. 예를 들어 interbase/firebird에 대한 IBEventAlerter와 같습니다. –
왜 타이머가 아닌 더 나은 방법일까요? 그냥 호기심. 또한 MySQL을 사용하고 있습니다. 예, 데이터 집합이 데이터베이스에 연결되어 있습니다. – Petzy
프로그램이 서버를 너무 자주 망치질 할 필요는 없습니다. 아마도 당신의 새로 고침의 99 %가 빈 손으로 반환하는 것입니다. 이를 피하기 위해 간격을 늘리면 변경 사항을 알리지 않을 위험이 있습니다. –