"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;
이 메뙤지는 이미 오픈된 데이타셋을 다시 오픈하려 했을때 나오는 메뙤지 입니다.
쿼리문이 시작될때 데이타셋이 닫혀 있지 않은것 같습니다.
아래의 쿼리 문장은 일반적이지 않군요.
데이타셋이 오픈되면 레코드의 포인터는 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;