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
[52098] Re:Re:Re:Re:Re:Re:김문제님 답변 정말 감사합니다.
수수께끼 [] 1562 읽음    2008-01-28 21:54
님 덕분에 성공했습니다 ㅎㅎ

ms access mdb파일 dbgrid에 뿌리고 편집하는것까지 성공했네요.

김문제님 리플이 아니었으면 한참 헤맸을듯..ㅋ

정말 고맙습니다~^^

김문제 님이 쓰신 글 :
: MDBDS1   에코.. 코드의 것을 그대로 붙여서 이름을 미쳐 못 바꾼 모양입니다.
:
: MDBDS1는  DataSource 컨포넌트의 개체 이름입니다.
: 이 것을 DataSource1로 바꾸시면 됩니다.
:
: 즉,
:          ADOQuery1->ConnectionString =
:          "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
:          + ExpandFileName("THW_CS.mdb");

:  ADOQuery1->SQL->Clear();
:  ADOQuery1->SQL->Text = "Select * from   + Samsung";  // table Name Basic

:  DataSource1->DataSet = ADOQuery1;
:  DBGrid1->DataSource =  DataSource1:
:
:  ADOQuery1->Open();
:
: 라고 하시면 될 듯 싶습니다.
:
:
:
: 아래의 이름을 안 바꾸고..그냥 올린 듯..
:
: 아래 참고 하세요.
:
:
: ------------------------------------------------------------------------
: ADOTable 이용할 때
:
: ADOTable1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ms2008.mdb;Persist Security Info=False";
: ADOTable1->TableName = "basic";
:
: DataSource2->DataSet = ADOTable1;
: DBGrid2->DataSource = DataSource2;
:
: ADOTable1->Open();
:
:
: ------------------------------------------------------------------------
: ADOQuery 이용할 때
:
: // ADOQuery를 이용한 MDB 파일 열기
: // ADOQuery 컴포넌트 ===> ADOQuery2
: // TDataSource 컨포넌트 ===> DataSource3
: // DBGrid 컴포넌트 ===>  DBGrid3
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:          ADOQuery2->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ms2008.mdb;Persist Security Info=False";
:          ADOQuery2->SQL->Text = "Select * from  basic";  // table Name Basic
:
:          DataSource3->DataSet = ADOQuery2;
:          DBGrid3->DataSource = DataSource3;
:
:          ADOQuery2->Open();
: }
:
:
:
:
:
: 수수께끼 님이 쓰신 글 :
: : 김문제님 답변 정말 감사합니다 ㅎㅎㅎ
: :
: : 님이 써주신대로 컴포넌트 올려놓고 데이터소스 컴포넌트 더블클릭해서 안에다 소스를 붙여넣고 조금 바꿔봤는데요
: :
: : 우선 제가 쓴 코드 보시죠 ㅋㅋ
: :
: : void __fastcall TForm1::DataSource1DataChange(TObject *Sender,
: :       TField *Field)
: : {
: :         ADOQuery1->ConnectionString =
: :         "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
: :         + ExpandFileName("THW_CS.mdb");
: :
: : ADOQuery1->SQL->Clear();
: : ADOQuery1->SQL->Text = "Select * from   + Samsung";  // table Name Basic
: :
: : DataSource1->DataSet = ADOQuery1;
: : DBGrid1->DataSource = MDBDS1;
: :
: : ADOQuery1->Open();
: :
: : 여기서 마지막 2번째줄에 MDBDS1에서 에러가 나네요.
: : 에러메시지는 [C++ Error] Unit4.cpp(212): E2451 Undefined symbol 'MDBDS1' 입니다.
: :
: : ADOMDBuery1 로 하니까 에러가 나서 ADOQuery1로 전부 바꿨구요.
: : mdb파일 불러오는건 스트링그리드로 불러올때 소스대로 했습니다.
: :
: : 죄송하지만 한번더 답변 부탁드리겠습니다..ㅎㅎ
: :
: : 아 그리고 위에 글쓴건 리플리 달려서 안지워지네요.
: :
: : 김문제님이 리플 지우시면 글 지우겠습니다. 중복된 글이어서..^
: :
: : 김문제 님이 쓰신 글 :
: : : 위에 답변 드렸는뎅
: : :
: : : ADO를 이용하시면 될 듯 합니다.
: : :
: : : ADOTable이나 ADOQuery를 이용하시면 되고염
: : :
: : : 저는 개인적은로 MDB의 여러 테이블에서 읽어오기 위해서
: : : ADOQuery를 주로 이용한 듯 합니다.
: : :
: : :
: : : 코드입니다.
: : :
: : : 컴포넌트는 ADOQuery, DataSource, DBGrid사용하시면 되구염
: : :
: : : ADOMDBQuery1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
: : :                  + OpenDBName
: : :                  + ";Persist Security Info=False";
: : :
: : : ADOMDBQuery1->SQL->Clear();
: : : ADOMDBQuery1->SQL->Text = "Select * from  " + OpenTableName;  // table Name Basic
: : :
: : : DataSource1->DataSet = ADOMDBQuery1;
: : : DBGrid1->DataSource = MDBDS1;
: : :
: : : ADOMDBQuery1->Open();
: : :
: : :
: : : SQL 문에서 조인을 이용하시면 쉽게 불러 올 수가 있을 겁니다.
: : :
: : : 도움이 되셨는지 ?
: : :
: : :
: : :
: : : 수수께끼 님이 쓰신 글 :
: : : : 답변 감사합니다 ^^
: : : :
: : : : 그렇다면 access mdb파일을 dbgrid에 뿌리는건 어떻게 하나요??
: : : :
: : : : 김문제 님이 쓰신 글 :
: : : : : StringGrid에는 그런 기능을 부여할 수 가 없는 듯 합니다.
: : : : : 하시려면 적절하게 코딩이 필요할 듯 합니다.
: : : : :
: : : : : 그냥, 엑세스에서 읽어 오는 기능이니까..
: : : : : SQL등을 이용하셔서 DBGrid를 사용하시는 것이 좋을 듯 합니다.
: : : : :
: : : : :
: : : : : StringGrid를 이용하시려면
: : : : :   CSV와 StringGrid 그리고 Memo와 TStringList 를 적절하게 이용하셔도 되구요..
: : : : :
: : : : : 이런 저런 생각을 해 보게 되네여
: : : : :
: : : : : 도움이 못되는 듯..
: : : : : 좀더 고민해 보겠습니다.
: : : : :
: : : : :
: : : : : 어짜피..
: : : : : 수수께끼 님이 쓰신 글 :
: : : : : : 스트링그리드에 데이터 뿌리는것까진 했습니다.
: : : : : :
: : : : : : 근데 데이터라는게 레코드도 추가하고 중간에 특정 셀의 데이터를 바꾸기도 하고 뭐 그런 기능이 있어야 하잖아요?
: : : : : :
: : : : : : 단순히 뿌리는것까진 했는데 여기서부터 막히네요 ㅋㅋ
: : : : : :
: : : : : : 스트링그리드를 수정해서 새로운 레코드를 만들고 거기다 데이터를 입력해서 최종적으로 테이블의 내용을 수정하는걸
: : : : : : 하고 싶습니다.
: : : : : :
: : : : : : 스트링그리드는 db네비게이터 같은게 없나요?
: : : : : :
: : : : : : 아래 소스는 스트링그리드에 데이터 뿌린 소스 입니다.
: : : : : :
: : : : : : int RowCount= 1 ;
: : : : : :
: : : : : :         AnsiString sSql;
: : : : : :
: : : : : :         switch(ComboBox1->ItemIndex){
: : : : : :                 case 0:
: : : : : :                          sSql = "select * from Samsung";
: : : : : :                         break;
: : : : : :                 case 1:
: : : : : :                         sSql = "select * from Tesna";
: : : : : :                         break;
: : : : : :                 case 2:
: : : : : :                         sSql = "select * from ASE";
: : : : : :                         break;
: : : : : :                 case 3:
: : : : : :                         sSql = "select * from LUSEM";
: : : : : :                         break;
: : : : : :                 case 4:
: : : : : :                         sSql = "select * from STS";
: : : : : :                         break;
: : : : : :                 case 5:
: : : : : :                         sSql = "select * from SESS";
: : : : : :                         break;
: : : : : :                 case 6:
: : : : : :                         sSql = "select * from Amkor";
: : : : : :                         break;
: : : : : :                 default :
: : : : : :                         MessageBox(Handle,
: : : : : :                         "인덱스가 잘못되었습니다.","Warning", MB_OK);
: : : : : :                         break;
: : : : : :         }
: : : : : :         objData->Recordset = objConn->Execute(sSql, cmdText, TExecuteOptions());
: : : : : :
: : : : : :         StringGrid1->Cells[0][0] = "순번";
: : : : : :         StringGrid1->Cells[1][0] = "작업날짜";
: : : : : :         StringGrid1->Cells[2][0] = "설비명";
: : : : : :         StringGrid1->Cells[3][0] = "설비 시리얼No.";
: : : : : :         StringGrid1->Cells[4][0] = "고장유형";
: : : : : :         StringGrid1->Cells[5][0] = "조치내용";
: : : : : :         StringGrid1->Cells[6][0] = "사용 Part";
: : : : : :         StringGrid1->Cells[7][0] = "고객 담당자";
: : : : : :         StringGrid1->Cells[8][0] = "작업자";
: : : : : :         StringGrid1->Cells[9][0] = "비고";
: : : : : :
: : : : : :         while (!objData->Eof)
: : : : : :         {
: : : : : :             StringGrid1->Cells[0][RowCount] = objData->FieldByName
: : : : : :                                         ("순번")->AsString;
: : : : : :             StringGrid1->Cells[1][RowCount] = objData->FieldByName
: : : : : :                                         ("작업날짜")->AsString;
: : : : : :             StringGrid1->Cells[2][RowCount] = objData->FieldByName
: : : : : :                                         ("설비명")->AsString;
: : : : : :             StringGrid1->Cells[3][RowCount] = objData->FieldByName
: : : : : :                                         ("설비 시리얼No")->AsString;
: : : : : :             StringGrid1->Cells[4][RowCount] = objData->FieldByName
: : : : : :                                         ("고장유형")->AsString;
: : : : : :             StringGrid1->Cells[5][RowCount] = objData->FieldByName
: : : : : :                                         ("조치내용")->AsString;
: : : : : :             StringGrid1->Cells[6][RowCount] = objData->FieldByName
: : : : : :                                         ("사용 Part")->AsString;
: : : : : :             StringGrid1->Cells[7][RowCount] = objData->FieldByName
: : : : : :                                         ("고객 담당자")->AsString;
: : : : : :             StringGrid1->Cells[8][RowCount] = objData->FieldByName
: : : : : :                                         ("작업자")->AsString;
: : : : : :             StringGrid1->Cells[9][RowCount] = objData->FieldByName
: : : : : :                                         ("비고")->AsString;
: : : : : :             objData->Next();
: : : : : :             ++RowCount;
: : : : : :         }
: : : : : :
: : : : : : 콤보박스에서 아이템을 선택하면 엑세스db파일의 테이블을 읽어서 그것을 스트링그리드에 표시하는겁니다.
: : : : : :
: : : : : : 고수님들 답변좀 해주세요 ㅎㅎㅎ
: : : : : :
: : : : : : 아 그리고 지금 스트링그리드의 프로퍼티에 레코드갯수(로우 카운트)를 3개로 맞춰놓은 상태인데요.
: : : : : :
: : : : : : 이렇게하면 불러오는 테이블의 레코드가 아무리 많아도 3개까지밖에 표시가 안되더라구요.
: : : : : :
: : : : : : 이걸 불러오는 테이블의 레코드갯수에 자동으로 맞춰지게 하려면 어떻게 해야될까요?
: : : : : :
: : : : : : 물론 스트링그리드의 레코드 범위를 넘어가면 스크롤바가 생겨야겠죠? ㅎㅎ
: : : : : :
: : : : : : 조금만 도와주세요~

+ -

관련 글 리스트
52075 StringGrid는 DBGrid처럼 DB네비게이터 같은거 없나요? 수수께끼 1220 2008/01/28
52082     Re:StringGrid는 DBGrid처럼 DB네비게이터 같은거 없나요? 김문제 1209 2008/01/28
52083         Re:Re:StringGrid는 DBGrid처럼 DB네비게이터 같은거 없나요? 수수께끼 1174 2008/01/28
52085             Re:Re:Re:StringGrid는 DBGrid처럼 DB네비게이터 같은거 없나요? 김문제 1395 2008/01/28
52087                 Re:Re:Re:Re:StringGrid는 DBGrid처럼 DB네비게이터 같은거 없나요? 수수께끼 1215 2008/01/28
52089                     Re:Re:Re:Re:Re:StringGrid는 DBGrid처럼 DB네비게이터 같은거 없나요? 김문제 1566 2008/01/28
52098                         Re:Re:Re:Re:Re:Re:김문제님 답변 정말 감사합니다. 수수께끼 1562 2008/01/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.