C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52285] Re:(답변)DBGrid로 데이터를 편집할때 쓰는 컴포넌트가 dbnavigator말고 다른건 없나요?
수수께끼 [] 2061 읽음    2008-02-15 10:41
김문제님 답변 감사합니다.

오래전에 올린 질문에 답변을 주시다니.. 감동했습니다. ㅠㅠㅠ

현재 제가 작성한 코드를 보여드리자면..

ADOQuery1->ConnectionString =
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        + ExpandFileName("THW_CS.mdb");

DBNavigator1->DataSource = DataSource1;

ADOQuery1->SQL->Text = "select * from SEC_S_LSI_Logic_Power";
                        ADOQuery1->SQL->Add("order By ID");
                        ADOQuery1->Open();

DataSource1->DataSet = ADOQuery1;
DBGrid1->DataSource = DataSource1;

여기까지가 쿼리로 테이블을 지정해서 DBGrid에 뿌리는거구요.

편집하는 부분은 네비게이터를 썼는데..

네비게이터의 여러가지 버튼이 보기 안좋아서 버튼을 몇개 만든다음 버튼을 누를때 네비게이터의 수정, 레코드추가 등등의 메소드를 발생시키도록 하였습니다.

ADOQuery1->Edit();
ADOQuery1->Insert();
ADOQuery1->Delete();

각각의 메소드마다 버튼이 있어서 버튼을 누를때 네비게이터의 해당 버튼이 눌리는식으로 코딩은 한 상태입니다.

네비게이터는 visible = false; 로 해서 안보이게 해놨구요.

현재 이런식으로 코딩을 했는데..

쿼리의 SQL을 사용해서 레코드를 삭제하거나 선택한 셀의 데이터를 변경하는게 가능하다는 말씀인가요?

그리고 제가 코딩한 방식이 GBGrid를 바로 수정하는 방식인가요???

아 그리고 GBGrid를 수정하기 위해서 ADOQuery1->Edit(); <-- 이게 코딩되있는 버튼을 누르면
GBGrid->ReadOnly = false; 가 되서 GBGrid에 데이터를 넣을수 있도록 했구요.

combobox를 사용하여 콤보박스의 리스트를 선택하면 그 데이터가 DBGrid에 들어가도록 했습니다.

이 부분의 코드를 보여드리자면..

       DBMemo4->DataSource = DataSource1;
       DBMemo4->Clear();
       DBMemo4->Lines->Add(ComboBox2->Items->Strings[ComboBox2->ItemIndex]);

먼저 db메모에 데이터필드 프로퍼티에 필드명을 써 넣었구요,
콤보박스의 아이템을 db메모로 보내고, db메모는 db그리드와 같은 데이터소스를 갖고있기 때문에
db메모에 데이터를 넣으면 db그리드의 해당 필드의 선택된 레코드에 데이터가 들어가게끔 했습니다.

이게 잘한걸까요?

워낙 초짜다 보니까 머릿속에 떠오르는 방법이 저것밖에 없더라구요 ;;




김문제 님이 쓰신 글 :
: 수수께끼님의 답변입니다.
:
: 질문이 너무. 스크롤 되어서.. 다시 입력하여 답변 드립니다.
:
: DBGrid로 데이터를 편집할때 쓰는 컴포넌트가 dbnavigator말고 다른건 없나요?
:
: DBGrid은 DataSource의 DataSet과 관련된 내용입니다.
:
: 눈에 보이기는 하지만, 실제로.. 가상적인 개념이라고 생각하셔야 합니다.
:
: Table인 경우는 Navigator를 이용하여 바로 자료(셀)의 수정, 삽입, 삭제 처리가 원활히 하지만,
:
: Query인 경우에는 이런 작업을 바로 할 수가 없습니다.
:
: 따라서, Table이나 Query인 경우에는
:
: SQL을 이용하시면 모두 처리가 가능합니다.
:
: CodeGear에서는 알기로는 dbGO 라는 ADO로 컴포넌트가 있는 것으로 알고 있습니다.
:
: 여기에서
:
: ADOCommand를 이용하시면
:
: SQL를 원활하게 구현할 수가 있습니다.
:
: 만일 자료의 수정량이 많을 때는,
:
: ADOStoreProc인가 ?? 이것 사용하시면 됩니다.
:
: 그럼 굳이 ... DBNavigator를 이용하지 않고도 쉽게.. DBGrid의 내용을 수정할 수가 있습니다.
:
: 실제 수정은.. 데이터베이스의 반영이 되겠죵..
:
: 그 반영된 내용을 보이게 하는 것이..바로 DBGrid이니까요
:
: ------------------------------------------------------------------------
: 절대....로!!!
: DBGird 를 바로 수정하려고 하지 마세요.. 위험한 발상(?) 이라고 생각합니다..
: ------- 정말 개인적 견해입니다.
: ------------------------------------------------------------------------

+ -

관련 글 리스트
52270 (답변)DBGrid로 데이터를 편집할때 쓰는 컴포넌트가 dbnavigator말고 다른건 없나요? 김문제 1267 2008/02/14
52285     Re:(답변)DBGrid로 데이터를 편집할때 쓰는 컴포넌트가 dbnavigator말고 다른건 없나요? 수수께끼 2061 2008/02/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.