Q&A

  • DCOM과 InterBase를 이용한...
저는 DCOM과 인터베이스를 이용한 신입생 선발 프로그램을

작성하려고 합니다. 제가 해결할 문제는 접수번호를 자동으로

부여하려고 하는데 인터베이스에는 파라독스와 같은

자동증가번호 필드가 없는 것으로 알고 있습니다.

여러개의 클라이언트에서 DCOM을 이용하여 응용프로그램

서버에 접근하여 유일한 접수번호를 순차적으로

부여받고자 하는데 어떤 방법이 있을지를 궁리하고 있습니다.

혹시 아시는 고수님들의 조언 부탁합니다!!!





3  COMMENTS
  • Profile
    황준동 1999.05.09 09:28
    김용식 wrote:

    > 저는 DCOM과 인터베이스를 이용한 신입생 선발 프로그램을

    > 작성하려고 합니다. 제가 해결할 문제는 접수번호를 자동으로

    > 부여하려고 하는데 인터베이스에는 파라독스와 같은

    > 자동증가번호 필드가 없는 것으로 알고 있습니다.

    > 여러개의 클라이언트에서 DCOM을 이용하여 응용프로그램

    > 서버에 접근하여 유일한 접수번호를 순차적으로

    > 부여받고자 하는데 어떤 방법이 있을지를 궁리하고 있습니다.

    > 혹시 아시는 고수님들의 조언 부탁합니다!!!

    >

    >

    넘 늦게 답변이 되는것 같네요.. 쿠쿠쿠.. 인터베이스에도 자동으로 증가하는 필드를 만드는 방법이 있어요.. GENERATOR라는게 있는데..

    1. 생성 : Create Generator 변수명 ---> ISQL 툴에서

    2. 초기값 : Set Generator 변수명 to 초기값 -> ISQL 툴에서

    3. 수신할변수 = GEN_ID(제너레이터변수명, 증가값); ---> StoredProcedure 안에서



    도움이 됐으면 좋겠네요..

    더 자세한건.. INTERBASE HELP에서 Generator를 찾아보세요..









  • Profile
    신인재 1998.10.13 10:11
    음..안녕하세요...

    아래내용을 참고하세요..

    트랜잭션을 이용하는 것인데 트랜잭션을 이용하면

    자동으로 테이블 locking이 발생하게 되어

    데이타 무결성을 유지할 수 있습니다.

    DCOM을 이용한다는 것으로 봐서 ReMoteServer를 이용하시는 거

    같은데 서버프로그램에서 맥스값을 구하는 쿼리를 만들때 아래와 같이

    트랜잭션안에 그 쿼리와 원하는 로직을 집어 넣는다면 해결이 될꺼 같습니다.

    inc_sql의 예 :

    select max(Rno) + 1 // rno는 컬럼

    from serial_tbl // 자동순번을 관리하기 위한 테이블



    begin

    with inc_sql do

    begin

    Database1.StartTransaction;

    try

    open; // inc_sql실행

    ..... // 원하는 처리내용

    .....

    .....

    .....

    update_qry; //inc_sql에서 얻은값을 최고값으로 table에 업데이트(그래야 중복되지 않은 순번을 가지고 올 수 있기 때문..)

    Database1.Commit; {on success, commit the changes};

    except

    Database1.Rollback; {on failure, undo the changes};

    raise; {raise the exception to prevent a call to CommitUpdates!}

    end;

    end;



    end;



    김용식 wrote:

    > 저는 DCOM과 인터베이스를 이용한 신입생 선발 프로그램을

    > 작성하려고 합니다. 제가 해결할 문제는 접수번호를 자동으로

    > 부여하려고 하는데 인터베이스에는 파라독스와 같은

    > 자동증가번호 필드가 없는 것으로 알고 있습니다.

    > 여러개의 클라이언트에서 DCOM을 이용하여 응용프로그램

    > 서버에 접근하여 유일한 접수번호를 순차적으로

    > 부여받고자 하는데 어떤 방법이 있을지를 궁리하고 있습니다.

    > 혹시 아시는 고수님들의 조언 부탁합니다!!!

    >





  • Profile
    신인재 1998.10.13 10:18
    아참 빠진게 있어서요...

    BDE에서 보면 SQLPASSTHRU MODE가 있는데 Shared noautocommit으로 맞추고

    사용하세요.....

    이렇게 하면 db에 바로 반영이 안되거든요(commit을 해주야하죠)



    신인재 wrote:

    > 음..안녕하세요...

    > 아래내용을 참고하세요..

    > 트랜잭션을 이용하는 것인데 트랜잭션을 이용하면

    > 자동으로 테이블 locking이 발생하게 되어

    > 데이타 무결성을 유지할 수 있습니다.

    > DCOM을 이용한다는 것으로 봐서 ReMoteServer를 이용하시는 거

    > 같은데 서버프로그램에서 맥스값을 구하는 쿼리를 만들때 아래와 같이

    > 트랜잭션안에 그 쿼리와 원하는 로직을 집어 넣는다면 해결이 될꺼 같습니다.

    > inc_sql의 예 :

    > select max(Rno) + 1 // rno는 컬럼

    > from serial_tbl // 자동순번을 관리하기 위한 테이블

    >

    > begin

    > with inc_sql do

    > begin

    > Database1.StartTransaction;

    > try

    > open; // inc_sql실행

    > ..... // 원하는 처리내용

    > .....

    > .....

    > .....

    > update_qry; //inc_sql에서 얻은값을 최고값으로 table에 업데이트(그래야 중복되지 않은 순번을 가지고 올 수 있기 때문..)

    > Database1.Commit; {on success, commit the changes};

    > except

    > Database1.Rollback; {on failure, undo the changes};

    > raise; {raise the exception to prevent a call to CommitUpdates!}

    > end;

    > end;

    >

    > end;

    >

    > 김용식 wrote:

    > > 저는 DCOM과 인터베이스를 이용한 신입생 선발 프로그램을

    > > 작성하려고 합니다. 제가 해결할 문제는 접수번호를 자동으로

    > > 부여하려고 하는데 인터베이스에는 파라독스와 같은

    > > 자동증가번호 필드가 없는 것으로 알고 있습니다.

    > > 여러개의 클라이언트에서 DCOM을 이용하여 응용프로그램

    > > 서버에 접근하여 유일한 접수번호를 순차적으로

    > > 부여받고자 하는데 어떤 방법이 있을지를 궁리하고 있습니다.

    > > 혹시 아시는 고수님들의 조언 부탁합니다!!!

    > >

    >