Q&A

  • 델파이5 + access 연동에 대한 여러가지 질문입니다.
Query와 DBGrid를 연동하여 사용하려고 합니다.
가장 기본적인 질문들인데요...
제가 여기 게시판에서 검색을 하여.. 여러 꽁수(??)를 써서 하였더니..
이제는.. 문제가 많이 심각하네요.. ㅠ.ㅠ
그래서, 처음부터 정석(??)대로 차근차근 다시 하려고 하는데요..

  1. 새로운 데이터를 추가하려고 할 때는 어떤 방법으로 해야 하나요?
  2. DBGrid에 뿌려진 기존 내용을 수정하였을 때, 수정된 사항을
     어떻게 저정해야 하나요?
  3. 또한, 기존 데이터의 삭제는 어떻게 해야 하나요?


그리고, 지금 많이 발생하는 에러들이 Query를 실행할때
'table is read only'와,
'invalid use of keyword'라는 에러가 많이 발생합니다.
그렇지만, 똑같은 SQL문장을 access에서 직접 실행하면
에러가 발생하지 않고 제대로 실행이 됩니다.. ㅠ.ㅠ
이런 에러가 왜 발생하는지 좀 알려주세요..

1  COMMENTS
  • Profile
    nilriri™ 2004.09.21 22:55

    정석이 따로 존재하진 않다고 생각합니다.

    새로운 데이터 추가방법을 몇가지 알아보면..

    첫째, insert into 구문으로 직접 구현한다.
    둘째, dbgrid에 연결된 데이터 셋을 dynamic, readwrite로 open하여 직접 수정가능하도록 한다.

    화면 구성과 프로그램특성 그리고 유저의 요구에 맞게 선택해서 사용하시면 될거 같습니다.

    디비그리드와 연결된 데이터셋의 applyupdate인가?  update, post등의 프로시져를 이용하시면 됩니다.

    query1.post;  이런식으로..^^;

    또는 그리드에서 선택하면 선택한 내용을 dbedit나 그냥 edit박스로 보여주고
    거기서 수정한 후에 저장하거나...

    직접 update 구문을 작성하여 업데이트후에..refresh해주는 방법이 있습니다.


    마찬가지입니다..그리드와 연결된 데이터셋에서..  query1.delete; 와 같은
    방법으로 현재 선택된 로우를 삭제할수 있습니다.

    또는 키값을 가져와서 delete 구문으로 직접 삭제하신수 refresh해주는 방법이 있습니다.

    이 에러는 말 그대로 읽기 전용으로 오픈했기 때문입니다.
    이 에러는 엑세스에서 사용하는 예약어를 컬럼명으로 사용해서 그렇습니다.
    컬럼명을 [] - 대괄호 로 묶어서 사용해 보십시오.

    select [date] from tablename ;

    이런식으로..   엑세스에서 직접 실행할때는 엑세스에서 예약어에대한
    처리를 내부적으로 해주고 있기 때문에 에러가 발생하지 않는걸 껍니다..^^



    즐프~