Q&A

  • 관심 좀 가져 주세요
"Access violation at address 4D41772A in module 'SQLMSS32.DLL'. Write of address 202020A6"



"Cannot perform this operation on an open dataset"



위와 같은 에러가 나는데 조언부탁드립니다(둘중에 하나라도 아시면 조언부탁드립니다)



Query한 부분은 이부분입니다

SOCK 테스트 중입니다

여러 PC에서 값을 주면 받아서 조회한후 결과를 돌려주는 프로그램인데요

위와 같은 에러가 나서요



With UDP_Query Do Begin

If Active Then Close;

SQL.Clear;

SQL.Add('select sock_b from sock_tab where sock_a = ''' + MsgRevS + '''');

// ShowMessage(ADO_Query.SQL.Text);

If Not Active Then Active := True;

If Not Bof Then First;

If Eof Then First;

ReCountI := RecordCount;

If ReCountI = 0 Then

MsgSendS := '값 없음'

Else If ReCountI = 1 Then

MsgSendS := Trim(Fields[0].AsString)

Else If ReCountI > 1 Then

MsgSendS := inttostr(ReCountI) + ': 값 중복';

End;

1  COMMENTS
  • Profile
    나그네 2001.10.16 19:52
    > "Cannot perform this operation on an open dataset"

    이 메뙤지는 이미 오픈된 데이타셋을 다시 오픈하려 했을때 나오는 메뙤지 입니다.

    쿼리문이 시작될때 데이타셋이 닫혀 있지 않은것 같습니다.

    아래의 쿼리 문장은 일반적이지 않군요.

    데이타셋이 오픈되면 레코드의 포인터는 first를 가리킵니다.

    강제로 포인터를 옮기지 않는한...



    > With UDP_Query Do Begin

    > If Active Then Close;

    > SQL.Clear;

    > SQL.Add('select sock_b from sock_tab where sock_a = ''' + MsgRevS + '''');

    > // ShowMessage(ADO_Query.SQL.Text);

    > If Not Active Then Active := True;

    > If Not Bof Then First;

    > If Eof Then First;

    > ReCountI := RecordCount;

    > If ReCountI = 0 Then

    > MsgSendS := '값 없음'

    > Else If ReCountI = 1 Then

    > MsgSendS := Trim(Fields[0].AsString)

    > Else If ReCountI > 1 Then

    > MsgSendS := inttostr(ReCountI) + ': 값 중복';

    > End;