|
안녕하세요! Magic.홍지곤 입니다.
일단 DB는 My-sql 입니다.
AnsiString Command; //Command 값은 userid에 비교할 값이 들어 감! 예) hong 이나, hjg 이런 값
AnsiString Data; //Data 예) 2이나 3이나 4 이런 값
tbUsers->SetKey();
tbUsers->FieldByName("userid")->AsString == Command;
tbUsers->GotoKey();
tbUsers->Edit();
tbUsers->FieldByName("state")->AsInteger = StrToInt(Data);
tbUsers->Post();
tbUsers->Refresh();
이렇게 구현 했습니다
구조는 C/S 구조입니다.
클라이언트 하나를 제컴에서 실행시켜 서버에 접속한 후 Command와 Data값을 주어 바꾸면 잘 바뀝니다.
그리고 제컴에 클라이언트를 종료한 후 다른 컴에서 서버로 접속한 후 해도 잘 됩니다.
그런데 클라이언트 2개가 서버에 접속된 상태에서 제컴의 클라이언트에서 Command와 Data값을 주어서
바뀌면 처음에는 바뀝니다. 그리고 2번째 클라이언트에서 값을 넣어 바꾸면 바뀝니다..다시
제컴의 클라이언트에서 값을 주고 돌리면, 왜 2번재 레코드에 값이 바뀌는지 모르겠습니다.
이 내용을 테이블로 표시하면...!
id userid password state
1 hjg 1004 1
2 hong 1004 1
3 test 2004 0
첫번째 제 클라이언트(hjg)에서 Command를 hjg 값을 주고 위에 문장
tbUsers->SetKey();
tbUsers->FieldByName("userid")->AsString == Command;
tbUsers->GotoKey();
여기까지 실행시킨후 맞으면, Data 값에 1값을 넣음!
tbUsers->Edit();
tbUsers->FieldByName("state")->AsInteger = StrToInt(Data);
tbUsers->Post(); tbUsers->Refresh();
그럼 state값에 1값으로 변경됨.
두번째 클라이언트(hong)에서도 state 값이 1로 잘 바뀜!
그리고 난후 다시 첫번째 클라이언트(hjg)를 주고 실행한후
Data값에 2값을 넣고 실행시키면 두번째(hong) 클라이언트
state값에 2로 바뀜
어떻게 이럴 수가 있는 거죠?
위에 방법되로 안되면 혹시 Query로 하는 방법은 없는지요?
아시는 분 빨리 답변 좀 올려주세요~~~
|