jboard


파라독스 관련지식
성명 na
홈페이지
첨부파일

백종민 님이 올리신 글-----------------------
> 델파이를 하면서 좋은 글들로 많은 도움을 받고 있는 초보입니다.
>
> 고수님들의 도움으로 랜 공유프로그램을 마무리 하였는데
>
> 한가지 궁금한 점이 있습니다.
>
> 참고로 공유를 위해
> bdeadmin 에서 share 로 했으며 session 으로 모든 테이블을 연결했고
> netdir 은 서로 같은 곳으로 지정하였습니다.
>
> 다른 문제는 없는데
>
> 한 테이블에서 다른 레코드를 서로 수정시에는 이상이 없는데
>
> 같은 레코드를 동시에 수정하려고 하면 "record Locked ..." 라는
>
> 메세지가 뜨는데
>
> 이것 원래 그런게 정상인지 아니면 제가 설정을 뭔가 잘못한것인지
>
> 궁금합니다.
>
> 제 생각으로는 share 이며 이러한 메세지도 없어야 할것 같은데요
>
> 좋은 답변 바라면서........
꼬밋 <===ㅋㅋ





안녕하세요. 정한교입니다.
lt 공유하시면 답을 구하실수 있는데..

일단 Paradox는 자신의 PC에 있는 DB를 쓰게끔,그리고 혼자서 쓰게 되어있습니다.
Local DB죠.

프로그램을 짜서 돌릴때 Paradox는 Table의 Lock 상태나 user등의 정보를
Pdoxusrs.net라는 File을 사용하여 처리하는 것으로 알고 있습니다.

이 Pdoxusrs.net이라는 File을 Lan 상에서 공유를 하게 함으로써 다른 컴의
사용자들도 하나의 Paradox에 접근이 가능하도록 하게 할수 있습니다.

우선 BDE Administrator 을 실행시키세요. Configration 탭을 선택한후
drivers 의 Native 의 Paradox 를 선택후 오른쪽 창에서 Net dir 을 여러대
의 (Net 상의 모든컴퓨터) 컴퓨터에서 다 같은 Dir을 참조하도록 고치세요.

넷상이라면 \\Cloent\C\dir1\ 뭐 이런형태가 될 것입니다. 만약 드라이브를
할당하였다면 그 pass를 적어줘도 됩니다.(네트워크 드라이브로 잡을 경우에는
같은 드라이브명을 할당해야 하겠죠?)

다음 System 의 INIT 의 오른쪽 창에서 Local share 항목을 True로 셋팅하세요.

이렇게 하시면 잘될겁니다.

또 하나 알아 두실점... 이렇게 한 후에는 자신의 PC의 Paradox는 사용하지 못합니
다. 공유되어 있는 컴퓨터의 Paradox만 사용할수 있습니다. 자신의 Paradox를
사용하려면 다시 위의 작업들을 바꿔줘야 합니다. 좀 불편하겠죠?



10.델파이강좌에 가시면
801번 자료에 랜 상에서 DB자료 공유 하는법이
자세히 설명되어 있습니다.

아! 그리고 참고로 DataBase컴포넌트를 쓰시면
여러가지로 편리합니다.(alias,session,table 컨트롤이 편해요)
그리고 되도록 Session이 하나면 Session컴포넌트를 쓰지 마세요.
Default로 이미 하나가 있어요.

Session.NetFileDir := 공통 경로명(보통 데이타 경로명을 쓰지요)

Session.PrivateDir := 임시 경로명
(랜 상에서 서로 중복되지 않는 경로명)
주의 할 점은 모든 Table Close 되어있어야 합니다.



그리 많은 내용이 아니라 온라인상으로 그냥 쓰겠습니다.
오타가 많아도 이해해 주시길 빌며..
많은 분들이 파라독스 공유에 대해 이야기하셨는데 그리 어려운
문제가 아니라 금방 해결하셨을 겁니다. 그럼 그해결하는 시간을
약간이나마 단축하고자 이렇게 글을 올립니다.
먼저 파라독스를 공유하기 위해서는 BDE Configration의
System페이지의 Local Share를 True로 놓습니다. 다음
프로그램에서 TSession을 놓으시고 SessionName을 주신후
Table과 연결합니다 (TTable에 SessionName Property가 있습니다.
그후 Session의 NetFileDir를 주는데 이건 모든 컴퓨터가 한 디
렉토리를 지정해야 합니다.(Tip:이게 컴마다 달리하니 귀찮아서
Confing화일을 두어 네트워크이름까지 포함하는 디렉토리명 예
를 들어 \\WideGround\c\Netdir 등과 같이.사용하는게 좋습니다.)
또 PrivateDir는 안정해주시는게 좋지만 Lock파일이 생성할 곳을
지정하고 싶으실때는 사용하십시요. 주의하실건 모든 컴퓨터가
이 PrivateDir는 틀려야 한다는 겁니다.(이해하셨죠?) 이렇게
하면 기본적인 파라독스 네트워크는 된겁니다. 그럼 이제 IBM의
유명한 선전(내가 마지막으로 고친걸 그쪽에서 몰라.)<- 이러면
안되겠지요. 그래서 그 처리를 위해서 통신을 사용합니다. 저는
윈속을 사용했지요. 우선 테이블에서의 작업은 거의 메모리에서
이루어집니다. 여기서 Refresh를 하면 현재작업내용과 디스크의
작업을 같게 하지요. 즉 다른 컴에서 작업한 내용은 이쪽 컴퓨
터에서 Refresh하면 나오게 되어있습니다.(위에 네트워크가 제대
로 구축이 되었다면) 그럼 내가 어떤 내용을 저장을 했다면 그걸
모두에게 알려 주어야겠군요. 자. 윈속을 쓰겠습니다. 먼저 서버
소켓을 두시고(DWinsock입니다. Del3도 마찬가지겠지요. 아직 안
써봐서리..) 주의하실건 서버소켓은 IP Address가 제일 높은놈이
되야 한다는건 아시겠지요? 암튼 이걸 데몬으로 놓고 클라이언트
에서 나 XXX테이블을 저장했어 하고 메세지가 날라오면 모든 클
라이언트들에게 보내주는 역할만을 하게합니다.(감이 오시지요?)
이제 클라이언트는 Table의 AfterPost에서 서버로 나 저장했어요
하고 메세지를 보냅니다. 그리고 클라이언트의 메세지를 받는 부
분에서는 메세지의 해당테이블의 상태를 체크해서 에티트상태나
클로스상태면 Refresh를 안해야겠죠? 총체적으로는 이런식으로
관리를 합니다. 그외에 레코드락을 걸기때문에 한 사용자가 어떤
레코드를 사용시 다른사용자가 접근하면 에러가 나므로 한글로
바꿔줘야 한다던지.. 여러가지가 있겠지만.. 별문제 아닌것들
같아서.. 도움이 되시길 빌며. 탁이였습니다.






Table AfterPost 이벤트에 다음 코드를 넣어 보세요.

TBDEDataSet(Table1).FlushBuffers;

물리적으로 저장하는 코드입니다.
보통 저장(Post)를 하면 메모리상에 저장되지요. 만약, 이때 정전이 된다면
데이타는 날라가 버립니다. 이걸 대비해서 위 코드를 실행하는데
이것은 파일(DB)에 직접 저장(Write)을 하니까 데이타 유실확률이 줄어 듭니다.


그럼..




왕초보 wrote:
> 프로그램 상에서 데이터를 입력하고 컴퓨터를 껏다가 키면
>
> 이전에 등록시켰던 데이타가 다 사라집니다.
>
> 혹시 이유 아시는분 있나요?
>
> 프로그램 코드상에서 지우는 코드는 없습니다.
>
> ㅜㅜ


2005-04-19 06:38:24 / 59.186.187.96
   

전체 121개 - 현재 6/9 쪽 관리자로그인~~
46 당신이 평생 절대로 먹지 말아야 할 것 2005-06-12 1063
45 DNS 설치 2005-05-22 933
44 액티브디랙토리설치 2005-05-22 968
43 인스톨쉴드 사용법(델마당에서) 2005-05-15 3810
파라독스 관련지식 na 2005-04-19 1455
41 인터넷 체크방법 sk 2005-04-10 983
40 장비 통신 setting sk 2005-04-06 887
39 when hitachi shutdown sk 2005-04-06 906
38 인터베이스 디비 설치법 sk 2005-04-06 1012
37 4500-interface-setting sk 2005-04-06 788
36 ms-sql 접속 sk 2005-04-06 907
35 parambyname 사용하기 na 2005-03-30 1157
34 일자 허리 예방 '척추기립근 스트레칭' 2005-01-11 1768
33 컴포넌트 배열처럼 사용하기 2005-01-02 1137
32 2005에서 퀵리포트는 사용이 불가함 2005-01-01 919
[맨처음] .. [이전] [3] [4] [5] 6 [7] [8] [9] [다음] .. [마지막]