Q&A

  • Pdoxuser.lck 이것땜시 집에 못가고 있어요!!!
안녕하세요.. Pdoxuser.lck 파일과 Paradox파일에 대해서 아시는분..도와주세요

아래 코드가 하는일은 DB의 데이타를 파일 서버로 올리는 작업인데요,

DB에서 읽어서 파일에 쓰는중에 험악한 꼴을 당하고 있습니다.



아래 코드를 작성된 소스를 돌리면 실행파일 디렉토리에 위의 두개의 파일이

생기면서 에러메세지가 뜹니다.



"Lock file is growed too large." <-----Error



실행파일이 있는 디렉토리에서 Pdoxuser.lck 의 사이즈를 확인하면 무려 26메가

나 됩니다.우째 이런일이...



문제의 코드 부분은 --------->

SearchQry.close;

SearchQry.SQL.clear;

SearchQry.SQL.Add('Select * From rSynoNym Where head_cd=:head_cd ORDER BY head_cd');

SearchQry.ParamByName('head_cd').AsString := SearchHQry.fieldByName('head_cd').AsString;

SearchQry.open;

<----------------- 여기까지구요.. 여기서 close를 안하면 원할하게 작동됩니다.

이유를 모르겠네요.

아래는 관련 소스부분입니다.

===========================================================================



AssignFile(WriteText, ClientFile);

Rewrite (WriteText);

While (Not SearchHQry.Eof) Do Begin

Inc(CurrCount);

StatusInfo.Panels.Items[1].text := '상위자료 ' + IntToStr(CurrCount) + ' 건';

WriteLn(WriteText, SearchHQry.fieldByName('head_nm').AsString);



SearchQry.close;

SearchQry.SQL.clear;

SearchQry.SQL.Add('Select * From rSynoNym Where head_cd=:head_cd ORDER BY head_cd');

SearchQry.ParamByName('head_cd').AsString := SearchHQry.fieldByName('head_cd').AsString;

SearchQry.open;



SearchQry.First;

While (Not SearchQry.Eof) Do Begin

Inc(CurrCount);

StatusInfo.Panels.Items[1].text := '하위자료 ' + IntToStr(CurrCount) + ' 건';

WriteLn(WriteText, ' '+SearchQry.FieldByName('syn_nm').AsString);

SearchQry.Next;

End;

SearchHQry.Next;

End;



CloseFile(WriteText);

==============================================================================



3  COMMENTS
  • Profile
    모인환 2000.01.27 19:11
    에구...해결했습니다...

    답변 주신 하얀까마귀님, 유도삼님께 감사드립니다.



    문제가 된던 쿼리의 프라퍼티중 cachedUpdates 속성을 false로 줬더니..

    잘 도네요.. 오래 속썩은게 이렇게 단순하게 해결되니 ..쩝..



    좋은 하루 만드세요~

  • Profile
    하얀까마귀 2000.01.27 08:06
    제가 도움이 될지 모르겠네요..

    단지 조금 말씀을 드리자면...

    파라독스는 레코드단위의 락을 지원합니다.. (신기하네)

    그러므로 불러온 데이타 하나하나에 락이 걸리는 경우 그럴 가능성이 있습니다.

    그런데 앞에서 보인 코드는 별로 그럴 가능성이 없는것 같네요...

    단지 다른부분..UpdateSQL이라든지 아니면 연결된 DataSource라든지..

    뭐 기타등등에서 그런 것들이 나타날수 있습니다.

    한번 찾아보세요.. 락이 걸릴만한것이 있는지..

    제대로 하셨다면 단지 기본적인 락파일만 생성될겁니다..

    그럼.

  • Profile
    유도삼 2000.01.27 05:03
    저의 경우를 말씀드리죠.

    저도 아래와 같은 에러를 만나 거의 미칠뻔 한적이 있습니다.

    해결책이 있냐구요?

    전 해결책을 못 찾았구요. 다른 방법을 사용했습니다.

    그 방법이 뭐냐 하면 이렇습니다.

    1. 쿼리를 사용하지 않는다.

    아래의 에러는 파라독스를 멀티 유저로 작동할 때만 발생이 되더군요.

    2. 대신 테이블에 쿼리와 동일한 필터를 적용합니다.

    3. 이 테이블이 내용이 바로 쿼리의 결과와 동일한 것이 되겠죠.

    4. 뭐 나머지는 인환님이 알아서 하시면 되겠죠.

    도움이 될까나...



    모인환 wrote:

    > 안녕하세요.. Pdoxuser.lck 파일과 Paradox파일에 대해서 아시는분..도와주세요

    > 아래 코드가 하는일은 DB의 데이타를 파일 서버로 올리는 작업인데요,

    > DB에서 읽어서 파일에 쓰는중에 험악한 꼴을 당하고 있습니다.

    >

    > 아래 코드를 작성된 소스를 돌리면 실행파일 디렉토리에 위의 두개의 파일이

    > 생기면서 에러메세지가 뜹니다.

    >

    > "Lock file is growed too large." <-----Error

    >

    > 실행파일이 있는 디렉토리에서 Pdoxuser.lck 의 사이즈를 확인하면 무려 26메가

    > 나 됩니다.우째 이런일이...

    >

    > 문제의 코드 부분은 --------->

    > SearchQry.close;

    > SearchQry.SQL.clear;

    > SearchQry.SQL.Add('Select * From rSynoNym Where head_cd=:head_cd ORDER BY head_cd');

    > SearchQry.ParamByName('head_cd').AsString := SearchHQry.fieldByName('head_cd').AsString;

    > SearchQry.open;

    > <----------------- 여기까지구요.. 여기서 close를 안하면 원할하게 작동됩니다.

    > 이유를 모르겠네요.

    > 아래는 관련 소스부분입니다.

    > ===========================================================================

    >

    > AssignFile(WriteText, ClientFile);

    > Rewrite (WriteText);

    > While (Not SearchHQry.Eof) Do Begin

    > Inc(CurrCount);

    > StatusInfo.Panels.Items[1].text := '상위자료 ' + IntToStr(CurrCount) + ' 건';

    > WriteLn(WriteText, SearchHQry.fieldByName('head_nm').AsString);

    >

    > SearchQry.close;

    > SearchQry.SQL.clear;

    > SearchQry.SQL.Add('Select * From rSynoNym Where head_cd=:head_cd ORDER BY head_cd');

    > SearchQry.ParamByName('head_cd').AsString := SearchHQry.fieldByName('head_cd').AsString;

    > SearchQry.open;

    >

    > SearchQry.First;

    > While (Not SearchQry.Eof) Do Begin

    > Inc(CurrCount);

    > StatusInfo.Panels.Items[1].text := '하위자료 ' + IntToStr(CurrCount) + ' 건';

    > WriteLn(WriteText, ' '+SearchQry.FieldByName('syn_nm').AsString);

    > SearchQry.Next;

    > End;

    > SearchHQry.Next;

    > End;

    >

    > CloseFile(WriteText);

    > ==============================================================================

    >