자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요. DB 공부를 이제서야 하고 있습니다.

sqlite로 DB를 만들어서 dbGrid에 보여주고 

해당 레코드를 dbEidt 에서 수정한 후 [저장] 버튼을 누르면 POST하도록 프로그램을 했습니다.

 

procedure TfrmSurvey.btn_DetailSaveClick(Sender: TObject);

begin

  r := StrToInt(db00_edID.Text);

  with dmDB.qrySurvey do begin

    if State <> dsEdit then Edit;

    FieldByName('CodeCity').AsInteger := StrToInt(BufData[0]);

    FieldByName('Dist1').AsFloat := StrToFloat(BufData[1]);

    FieldByName('Dist2').AsFloat := StrToFloat(BufData[2]);

    FieldByName('Code1').AsFloat := StrToFloat(BufData[3]);

    FieldByName('Code2').AsFloat := StrToFloat(BufData[4]);

    Post;

    Refresh;

  end;

  temp := db00_edID.Text + ')' + db08_edName.Text;

  ShowMessage(temp + ' 조사자료가 수정되었습니다.');

end;

여기서, BufData는 계산으로 변경하고자 데이터 내용입니다.

 

그런데 실행을 하면 POST에서 아래와 같은 에러 메시지가 발생합니다.

-----

[FireDAC][Phys][SQLite] ERROR: database is locked 
-----

인터넷에서 찾아보면 해당 테이블을 닫지 않아서 생기는 문제라고 하지만

DBGrid에 DataSource를 통해 DB에 자동 접근할 뿐 이외는 해당 쿼리를 접근하고 있지 않습니다..

 

해결방법은 있을까요....