Q&A

  • MIDAS로 ACTIVEX 프로그램 연결 문제.
MIDAS로 ACTIVEX 프로그램을 하고 있습니다.

서버 프로그램과 ACTVIEX 폼을 SOCKET 으로 연결 하고있습니다.

그런데 A라는 ACTIVEX 폼을 불른 다음 B라는 ACTIVEX 폼을 불러오면

에러가 대개의 경우 커널 에러나 그냥 다운이 됩니다.

SOCKET SERVER 에서 보면 ACTIVEX 폼을 불러온 CLIENT의 연결이 끈어지지 않고

계속 연결이 되어 있어 있습니다. (한 IP로 연결이 두개로 되어있습니다)

물론 ACTIVE FORM의 Destroy 이벤트에서 Connection은 끈게 해놨습니다.

왜그러지요. 부탁 드리겠습니다.



3  COMMENTS
  • Profile
    bluechip 1999.12.02 09:07
    내용의 이해가 잘 되질 않지만

    Destroy에 정의한 명령이 제대로 먹질 않아서 문제가 발생한 경우라면

    혹시, ActiveXForm에서 Event항목에 있는 OnDestory를 선택하신것이 아닌지 모르겠네요

    TForm인경우와 다르게 ActiveXForm은 Source를 잘보면

    procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    begin

    if FEvents <> nil then FEvents.OnDestroy;



    --- < 여기 추가 > ---



    end;

    이런 부분을 찾을수가 있는데, 그냥 이곳 마지막에 연결해제부분을 추가하면 됩니다





    이정환 wrote:

    > MIDAS로 ACTIVEX 프로그램을 하고 있습니다.

    > 서버 프로그램과 ACTVIEX 폼을 SOCKET 으로 연결 하고있습니다.

    > 그런데 A라는 ACTIVEX 폼을 불른 다음 B라는 ACTIVEX 폼을 불러오면

    > 에러가 대개의 경우 커널 에러나 그냥 다운이 됩니다.

    > SOCKET SERVER 에서 보면 ACTIVEX 폼을 불러온 CLIENT의 연결이 끈어지지 않고

    > 계속 연결이 되어 있어 있습니다. (한 IP로 연결이 두개로 되어있습니다)

    > 물론 ACTIVE FORM의 Destroy 이벤트에서 Connection은 끈게 해놨습니다.

    > 왜그러지요. 부탁 드리겠습니다.

    >

  • Profile
    이정환 1999.12.02 21:19
    먼저 답변 감사합니다.

    제가 먼저 문의 드린 내용이 불충분해서 다시 보충해서 질문 드리겠습니다.



    마이다스를 이용한 activeX 폼 만들었습니다.

    (A 라는 activeX폼과 B 라는 activeX폼 2개의 activeX 폼을 만들었습니다.)



    먼저 A 라는 activeX 폼을 internet exploer에서 불러올경우 A라는 activeX 폼이

    잘 올라옵니다.



    A 라는 activeX 폼이 internet exploer에서 떠 있을 경우 또다른 internet exploer를

    띄워 B 라는 activeX 폼을 불러올 경우 다운 이 됩니다.



    또 A 라는 activeX 폼을 불러온 internet exploer를 종료 하고

    B 라는 activeX 폼을 internet exploer에서 불러와도 다운 이 됩니다.



    왜 그러지요..



    Q&A를 검색 해보니까 server Application에서 Session을 사용하지 않을경우 그렇다는데

    저희 사용 하고 Auto Session Name := true 했습니다.



    그리고 activeX 폼이 종료 되면서 DB 와 disconnect 가 되지않아서 그런것 같아서 먼저 답변 주신것과 같이



    procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    begin

    if FEvents <> nil then FEvents.OnDestroy;

    begin;

    showmessage('종료 합니다.');

    DataModule1.ClientDataset1.Close;

    DataModule1.MidasConnection1.Connected := False;

    end;

    end;



    해봤는데 exploer를 종료 할때 Showmessage 가 안나 옵니다.

    DestroyEvent를 안타는걸까요 ?

    왜 그러지요.



    최종 문제점은 이렇습니다.



    activeX 폼을 부른 internet exploer를 종료 할경우나 internet exploer 메뉴상의

    앞으로,뒤로 버튼을 누를 경우 어플리케이션 서버와의 DB 연결을 어떻게 끈느냐 입니다.

    테스트를 해본 결과 activeX 폼상에 버튼을 만들어서 어플리케이션 서버 와 DB와의 연결을 끈으면 끈어집니다.

    DestroyEvent는 internet exploer를 종료 할때 타지 않는것 같습니다.



    internet exploer를 종료 할경우나 internet exploer 메뉴상의

    앞으로,뒤로 버튼을 누를 경우 어떤 이벤트(?)를 발생시킬수 있는지 알고 싶습니다.



    또 이렇게 적고 보니 내용이 좀 이상한것 .....



    아시는 분 답변 부탁 드리겠습니다.









    도움 부탁 드리겠습니다.



    bluechip wrote:

    > 내용의 이해가 잘 되질 않지만

    > Destroy에 정의한 명령이 제대로 먹질 않아서 문제가 발생한 경우라면

    > 혹시, ActiveXForm에서 Event항목에 있는 OnDestory를 선택하신것이 아닌지 모르겠네요

    > TForm인경우와 다르게 ActiveXForm은 Source를 잘보면

    > procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    > begin

    > if FEvents <> nil then FEvents.OnDestroy;

    >

    > --- < 여기 추가 > ---

    >

    > end;

    > 이런 부분을 찾을수가 있는데, 그냥 이곳 마지막에 연결해제부분을 추가하면 됩니다

    >

    >

    > 이정환 wrote:

    > > MIDAS로 ACTIVEX 프로그램을 하고 있습니다.

    > > 서버 프로그램과 ACTVIEX 폼을 SOCKET 으로 연결 하고있습니다.

    > > 그런데 A라는 ACTIVEX 폼을 불른 다음 B라는 ACTIVEX 폼을 불러오면

    > > 에러가 대개의 경우 커널 에러나 그냥 다운이 됩니다.

    > > SOCKET SERVER 에서 보면 ACTIVEX 폼을 불러온 CLIENT의 연결이 끈어지지 않고

    > > 계속 연결이 되어 있어 있습니다. (한 IP로 연결이 두개로 되어있습니다)

    > > 물론 ACTIVE FORM의 Destroy 이벤트에서 Connection은 끈게 해놨습니다.

    > > 왜그러지요. 부탁 드리겠습니다.

    > >

  • Profile
    bluechip 1999.12.03 06:55
    안녕하세요 !!



    제가 이 글을 올릴때 쯤이면 이미 해결 하셨을지도 모르겠네요..



    activeX 폼을 부른 internet exploer를 종료 할경우나 internet exploer 메뉴상의

    앞으로,뒤로 버튼을 누를 경우 어플리케이션 서버와의 DB 연결을 해제하기 위해서

    추가한 곳은 맞는것 같은데, 다시 확인해 보겠습니다

    procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    procedure루틴을 직접 생성한 기억이 없어야 합니다

    무슨 얘기야 하면 ActiveForm개발때 저절로 만들어 집니다

    이렇게 이미 만들어져 있는 아래에 원하는 내용을 넣으시면 됩니다



    procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    begin

    if FEvents <> nil then FEvents.OnDestroy;

    end;

    < 위의 루틴은 저절로 만들어져 있던것 >



    아래는 원하는 기능을 추가한것

    procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    begin

    if FEvents <> nil then FEvents.OnDestroy;



    showmessage('종료 합니다.');

    DataModule1.ClientDataset1.Close;

    DataModule1.MidasConnection1.Connected := False;

    end;



    이렇게 되었는지 한번 더 확인해 보십시오 !!



    전 이렇게 해서 되었거던요..



    '종료 합니다'라는 메세지가 보이죠?



    에러 메세지의 종류를 알수 없어서 자세히 알기 힘들지만

    일단 위의 메세지가 보이는지부터 확인해 보세요 !!





    이정환 wrote:

    > 먼저 답변 감사합니다.

    > 제가 먼저 문의 드린 내용이 불충분해서 다시 보충해서 질문 드리겠습니다.

    >

    > 마이다스를 이용한 activeX 폼 만들었습니다.

    > (A 라는 activeX폼과 B 라는 activeX폼 2개의 activeX 폼을 만들었습니다.)

    >

    > 먼저 A 라는 activeX 폼을 internet exploer에서 불러올경우 A라는 activeX 폼이

    > 잘 올라옵니다.

    >

    > A 라는 activeX 폼이 internet exploer에서 떠 있을 경우 또다른 internet exploer를

    > 띄워 B 라는 activeX 폼을 불러올 경우 다운 이 됩니다.

    >

    > 또 A 라는 activeX 폼을 불러온 internet exploer를 종료 하고

    > B 라는 activeX 폼을 internet exploer에서 불러와도 다운 이 됩니다.

    >

    > 왜 그러지요..

    >

    > Q&A를 검색 해보니까 server Application에서 Session을 사용하지 않을경우 그렇다는데

    > 저희 사용 하고 Auto Session Name := true 했습니다.

    >

    > 그리고 activeX 폼이 종료 되면서 DB 와 disconnect 가 되지않아서 그런것 같아서 먼저 답변 주신것과 같이

    >

    > procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    > begin

    > if FEvents <> nil then FEvents.OnDestroy;

    > begin;

    > showmessage('종료 합니다.');

    > DataModule1.ClientDataset1.Close;

    > DataModule1.MidasConnection1.Connected := False;

    > end;

    > end;

    >

    > 해봤는데 exploer를 종료 할때 Showmessage 가 안나 옵니다.

    > DestroyEvent를 안타는걸까요 ?

    > 왜 그러지요.

    >

    > 최종 문제점은 이렇습니다.

    >

    > activeX 폼을 부른 internet exploer를 종료 할경우나 internet exploer 메뉴상의

    > 앞으로,뒤로 버튼을 누를 경우 어플리케이션 서버와의 DB 연결을 어떻게 끈느냐 입니다.

    > 테스트를 해본 결과 activeX 폼상에 버튼을 만들어서 어플리케이션 서버 와 DB와의 연결을 끈으면 끈어집니다.

    > DestroyEvent는 internet exploer를 종료 할때 타지 않는것 같습니다.

    >

    > internet exploer를 종료 할경우나 internet exploer 메뉴상의

    > 앞으로,뒤로 버튼을 누를 경우 어떤 이벤트(?)를 발생시킬수 있는지 알고 싶습니다.

    >

    > 또 이렇게 적고 보니 내용이 좀 이상한것 .....

    >

    > 아시는 분 답변 부탁 드리겠습니다.

    >

    >

    >

    >

    > 도움 부탁 드리겠습니다.

    >

    > bluechip wrote:

    > > 내용의 이해가 잘 되질 않지만

    > > Destroy에 정의한 명령이 제대로 먹질 않아서 문제가 발생한 경우라면

    > > 혹시, ActiveXForm에서 Event항목에 있는 OnDestory를 선택하신것이 아닌지 모르겠네요

    > > TForm인경우와 다르게 ActiveXForm은 Source를 잘보면

    > > procedure TActiveFormX1.DestroyEvent(Sender: TObject);

    > > begin

    > > if FEvents <> nil then FEvents.OnDestroy;

    > >

    > > --- < 여기 추가 > ---

    > >

    > > end;

    > > 이런 부분을 찾을수가 있는데, 그냥 이곳 마지막에 연결해제부분을 추가하면 됩니다

    > >

    > >

    > > 이정환 wrote:

    > > > MIDAS로 ACTIVEX 프로그램을 하고 있습니다.

    > > > 서버 프로그램과 ACTVIEX 폼을 SOCKET 으로 연결 하고있습니다.

    > > > 그런데 A라는 ACTIVEX 폼을 불른 다음 B라는 ACTIVEX 폼을 불러오면

    > > > 에러가 대개의 경우 커널 에러나 그냥 다운이 됩니다.

    > > > SOCKET SERVER 에서 보면 ACTIVEX 폼을 불러온 CLIENT의 연결이 끈어지지 않고

    > > > 계속 연결이 되어 있어 있습니다. (한 IP로 연결이 두개로 되어있습니다)

    > > > 물론 ACTIVE FORM의 Destroy 이벤트에서 Connection은 끈게 해놨습니다.

    > > > 왜그러지요. 부탁 드리겠습니다.

    > > >