Q&A

  • 같은테이블에 2대이상의 컴에서... 추가
안녕하세요..

이게 가능한건지 좀 알고 싶습니다.

저는 인테베이스를 쓰구요.



2대 이상의 컴퓨터가 서로 연결되어서 사용하고 모두 같은 테이블을 열어 사용하고 있습니다.

근대 한컴퓨터에서 수정이나 삭제 추가가 발생하면 자동으로 다른컴의 디비그리드도 추가 삭제가 되게 하려 합니다.



전 아무리 해도 a컴에 추가 하면 b,c컴에는 recordcount는 바뀌지만 디비그리드에는 추가가 안되더라구요..



Tdatabase를 썼구요. 트랜잭션을 걸어 사용했습니다.



SQLPASSTHRU MODE도 바꿔봤고, database의 transolsolation 도 해 봤습니다..



테이블을 close; open; 이나 refresh 를 하지않는이상은 방법이 없나요?



// 레코드 추가 시

procedure TForm2.Button1Click(Sender: TObject);

begin

database1.StartTransaction;

with TABLE1 do

begin

append;

fieldbyname('gur_name').asstring:=formatdatetime('hh:mm:ss',now);

post;

ApplyUpdates;

// CommitUpdates;

end;

database1.Commit;

end;















4  COMMENTS
  • Profile
    나그네 2001.07.25 22:42
    장철진 wrote:

    > 안녕하세요..

    > 이게 가능한건지 좀 알고 싶습니다.

    > 저는 인테베이스를 쓰구요.

    >

    > 2대 이상의 컴퓨터가 서로 연결되어서 사용하고 모두 같은 테이블을 열어 사용하고 있습니다.

    > 근대 한컴퓨터에서 수정이나 삭제 추가가 발생하면 자동으로 다른컴의 디비그리드도 추가 삭제가 되게 하려 합니다.

    >

    > 전 아무리 해도 a컴에 추가 하면 b,c컴에는 recordcount는 바뀌지만 디비그리드에는 추가가 안되더라구요..

    >

    > Tdatabase를 썼구요. 트랜잭션을 걸어 사용했습니다.

    >

    > SQLPASSTHRU MODE도 바꿔봤고, database의 transolsolation 도 해 봤습니다..

    >

    > 테이블을 close; open; 이나 refresh 를 하지않는이상은 방법이 없나요?

    >

    > // 레코드 추가 시

    > procedure TForm2.Button1Click(Sender: TObject);

    > begin

    > database1.StartTransaction;

    > with TABLE1 do

    > begin

    > append;

    > fieldbyname('gur_name').asstring:=formatdatetime('hh:mm:ss',now);

    > post;

    > ApplyUpdates;

    > // CommitUpdates;

    > end;

    > database1.Commit;

    > end;

    >

    >

    >

    >

    >

    >

    >

    답변이라기보다는 제안입니다.

    DataSource 의 OnDataChange 나 OnUpdateDate 류의 이벤트를 사용해서

    변경될때마다 리플레쉬 해주면 어떨까요?

  • Profile
    장철진 2001.07.26 02:36
    > 답변이라기보다는 제안입니다.

    > DataSource 의 OnDataChange 나 OnUpdateDate 류의 이벤트를 사용해서

    > 변경될때마다 리플레쉬 해주면 어떨까요?





    나그네님 답변감사합니다.

    근데 전 리플레쉬보다 a 컴에 커밋을 했을때 b컴에도 자동으로 리플래쉬되는걸 알고 싶어서요...

    그리구 A컴에 추가가 되었을때 B컴의 OnDataChange 나 OnUpdateDate 이번트가 발생하지 않은데요?









  • Profile
    aparadin 2001.07.28 01:11
    장철진 wrote:

    > > 답변이라기보다는 제안입니다.

    > > DataSource 의 OnDataChange 나 OnUpdateDate 류의 이벤트를 사용해서

    > > 변경될때마다 리플레쉬 해주면 어떨까요?

    >

    >

    > 나그네님 답변감사합니다.

    > 근데 전 리플레쉬보다 a 컴에 커밋을 했을때 b컴에도 자동으로 리플래쉬되는걸 알고 싶어서요...

    > 그리구 A컴에 추가가 되었을때 B컴의 OnDataChange 나 OnUpdateDate 이번트가 발생하지 않은데요?

    ***********************************************************************)

    짧은 제안입니다. 커밋이 이루어지더라도 2번째에서는 이미 먼저 셀렉트한

    자료만을 가지고있기때문에 다시 refresh하기전까지는 인식을 하지못할겁니다.

    refresh는 자신의 그리드와 컬럼을 refresh하는것이기 때문일걸요 그렇다면..

    타이머를 쓰던가 해서 주기적으로 각자의 실행파일자체에서 refresh를 해주어야

    할것같은데요..

    그리고 recordcount가 바뀌었다는것은 다시 select해보신게 아닌가요?

    recordCount는 어쨌던가 Sql이 Open되어야하기때문에 그렇다면 결과적으로

    refresh 를 해본것이 되는거죠.

  • Profile
    이방인 2001.07.27 00:44
    장철진 wrote:

    > > 답변이라기보다는 제안입니다.

    > > DataSource 의 OnDataChange 나 OnUpdateDate 류의 이벤트를 사용해서

    > > 변경될때마다 리플레쉬 해주면 어떨까요?

    >

    >

    > 나그네님 답변감사합니다.

    > 근데 전 리플레쉬보다 a 컴에 커밋을 했을때 b컴에도 자동으로 리플래쉬되는걸 알고 싶어서요...

    > 그리구 A컴에 추가가 되었을때 B컴의 OnDataChange 나 OnUpdateDate 이번트가 발생하지 않은데요?

    >

    >

    >

    >

    DataSet에 AutoRefresh 는 뭐하는걸까요??