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
[12948] 강요찬님의 성의있는 답변에 감사드리면서.....
나그네 [] 909 읽음    2001-11-22 10:25
제가 설명이 좀 부족했던것 같습니다.
저는 DB를 Access의 mdb를 사용하였습니다.
그리고 이를 이용하기위해 ADO를 이용하였는데.
TADOConnection 과 TADOTable를 사용하였습니다.
두개의 클래스에 대한 객체는 컴포넌트를 이용하지 않고
메인 폼에서 두개의 클래스에 대해 객체를 생성을 하고.
이를 버튼 이벤트시 사용을 했습니다,
메인 폼이 닫힐떄 두개의 객체를 소멸 시켰습니다.

사실 Table->Connection 은 TADOTable->Connection입니다.
나머지 ADOTable->TableName 부분이나 ADOTable->Open() 및 ADOTable->Close()는 저번에
제가 질문을 드렸던 부분과 동일합니다..

저의 설명이 부족하여... 죄송합니다..
다시한번 제가 도움을 받을 수 있다면,,, 감사합니다



강요찬 님이 쓰신 글 :
: 나그네님의 글을 읽고 말 그대로라면 참 재밌는 현상일 것 같아 시험을 해 보았습니다.
: 그런데.. 제가 실험한 결과로는 Table1->Close(); 라인에 그 어떤 오류도 나타나지 않더군요.
: 물론 모든 데이터파일은 모두 비어 있는 파일을 사용했습니다.("a.dbf","b.dbf","c.dbf")
:
: DBGrid->DataSource1->Table1 로 연결해서, 연결된 테이블이 바뀜에 따라 그리드 타이틀이 바뀌는 것까지 확인했습니다.
:
: 오류가 있다면, 어떤 다른 곳에 오류가 있는 듯 싶습니다.
:
: 아래 코드와 같이 <BitBtn1> 버튼을 계속 눌러 보았습니다.
:
: void __fastcall TFSQLTest::BitBtn1Click(TObject *Sender)
: {
:   AnsiString table[]={"a.dbf","b.dbf","c.dbf"};
:   static int n=0;
:
:   Table1->Close();
:   Table1->TableName=table[n%3];
:   Table1->Open();
:   n++;
: }
:
:
: 그런데..
: 나그네님의 글 중
:
:         myTable->Connection = myConnection1;
:
: 이 라인은 무엇을 뜻하는지 모르겠습니다.
: TTable 옵젝트 클래스에 Connection 이라는 Property 는 못 보았는데요...?
:
:
: =======================================================================
:
: 나그네 님이 쓰신 글 :
: : 저는 TTable을 쓸때면 이렇게 씁니다.
: : 전역에 TTable객체를 선언하구,
: : 폼의 Create()에서 그 객체를 생성합니다.
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: :   myTable = new TTable(this);
: :   myTable->Connection = myConnection1;
: : }
: :
: : 그리고 이 테이블 객체를 사용할때는 이렇게 사용을 합니다.
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: :   myTable->Close();
: :   myTable->TableName = tblMyTable;
: :   myTable->Open();
: :   ..............
: :   ..............
: : }
: :
: :
: : 이렇게 해서 사용을 하면 대부분 문제없이 잘 돌아 갑니다.
: : 그런데... 위에서 버튼을 여러번 누를경우 테이블을 먼저 닫아주는 부분에서
: : 에러가 가끔 나긴하거든요.
: :
: : 에러가 나는 이유를대충 보니깐.. Close()하려는 테이블에 내용이 전혀 없을경우 에러가 나더라구요.
: :
: : 예를 들어보면
: :
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: :   switch(nCase){
: :      case 1:
: :          myTable->Close();
: :          myTable->TableName = tblMyTable1;
: :          myTable->Open();
: :          return;
: :     case 2:
: :          myTable->Close();
: :          myTable->TableName = tblMyTable2;
: :          myTable->Open();
: :          return;
: :    
: :     case 3:
: :          myTable->Close();
: :          myTable->TableName = tblMyTable3;
: :          myTable->Open();
: :          return;
: :   
: :     default:
: :          return;
: :   } 
: : }
: :
: : 이런 경우에 case가 1에서 2로 바뀔때 tblMyTable1의 내용이 있다면
: : myTable->Close()도 잘 하고 myTable->Open()도 잘하는데..
: : case 2: 에서 만약 tblMyTable2의 레토드 갯수가 하나도 없을 경우....
: : 다시 case 3으로 넘어 간다면..
: : tblMyTable->Close()에서 에러가 나옵니다..
: :
: :
: : 사실,, 모든 테이블은 그 내용이 들어있는건 기본 가정입니다.
: : 하지만..이런 에러를 잡지 않은채 코딩을 한다는게 좀 걸려서요..
: :
: :
: : 제가 지금 겪는 이런 에러에 대해 잘 대처할 수 있는 방법을 없을까요??
: :
: : 도움을 바랍니다.....
: :

+ -

관련 글 리스트
12863 TTable 질문인데요. 나그네 802 2001/11/20
12930     Re:TTable 질문인데요. 강요찬 880 2001/11/21
12948         강요찬님의 성의있는 답변에 감사드리면서..... 나그네 909 2001/11/22
12967             Re:강요찬님의 성의있는 답변에 감사드리면서..... 강요찬 1047 2001/11/22
12974                 그렇군요... ㅡㅡ; 나그네 1004 2001/11/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.