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
[45907] Re:Re:Re:또 데이터베이스(ADO)에 대해 질문이요^^
고황일 [hwangil] 971 읽음    2006-07-28 18:22
안녕하세요..
에러메세지 내용으로는 읽기 전용인 프로퍼티를 설정하려 했다는 에러인데...
Timer에 의한 Connection의 이상 같지는 않구요.. 지금까지 질문하신 DB파일의 위치와는
상관없는 에러 같은데... 혹.. Timer1의 Enabled Event가 의도하지 않게 Connected가 false되어 있지 않는 상태에서
두번 일어 나는건 아닌지요 혹은 다른 부분에서 에러가 발생하는지 디버그를 해봐야 할듯 싶습니다.

잠시 코딩으로 확인을 해보는데...첨부된 에러 화면 캡춰를 참조...
DefaultDatabase property를 코딩으로 입력하닌깐 비슷한 에러가 나는군요.. 혹시 코드 중에 ADOConnection의
DefaultDatabase 프로퍼티를 변경하시지는 않았습니까?

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
         Timer1->Enabled=false;
         String ExecutePath=ExtractFilePath(Application->ExeName)+"DB\\";
         String DBFileName="FileDB.mdb";
// 이렇게 넣어서 에러가 발생했습니다.
         FileDataBase->ADOConnection1->DefaultDatabase = WideString(DBFileName);

         FileDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
         FileDataBase->ADOConnection1->Connected=true;
         FileDataBase->ADOQuery1->Active=true;

Destinyz 님이 쓰신 글 :
: 안녕하세요, Destinyz입니다^^ 지금도 어제처럼 비가 마구 쏟아지는군요;;
:
: 고황일님, 답변 정말 감사드립니다. 그런데.. 제가 질문을 잘못드린것 같군요^^[워낙 비몽사몽이어서;ㅅ ;]
:
: 제가 코딩한 그 타이머부분을 보면, 예전 질문했던 것이
:
: ////////////////
:
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
:         Timer1->Enabled=false;
:         String ExecutePath=ExtractFilePath(Application->ExeName)+"DB\\";
:         String DBFileName="FileDB.mdb";
:         FileDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
:         FileDataBase->ADOConnection1->Connected=true;
:         FileDataBase->ADOQuery1->Active=true;
:         DBFileName="FileDB.mdb";
:         SpyDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
:         SpyDataBase->ADOConnection1->Connected=true;
:         SpyDataBase->ADOQuery1->Active=true;
:         Form1->Hide();
:         Form2->Show();
: }
:
: ////////////////
:
: 이거엿는데요... 제가 잘못 코딩한 부분이 있더라구요^^;; 바로
:
: ////////////////
:
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
:         Timer1->Enabled=false;
:         String ExecutePath=ExtractFilePath(Application->ExeName)+"DB\\";
:         String DBFileName="FileDB.mdb";
:         FileDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
:         FileDataBase->ADOConnection1->Connected=true;
:         FileDataBase->ADOQuery1->Active=true;
:         DBFileName="FileDB.mdb"; // <- 이부분 입니다;; 원래는 DBFileName="SpyDB.mdb"; 인데말이죠^^;;
:         SpyDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
:         SpyDataBase->ADOConnection1->Connected=true;
:         SpyDataBase->ADOQuery1->Active=true;
:         Form1->Hide();
:         Form2->Show();
: }
:
: ////////////////
:
: 이 것을 실행시킨 결과, 첨부파일과 같은 오류가 났습니다.
: 이젠 뭐라고해야할지... 아 정말 데이터베이스가 제 속을 썩이고 있군요!!ㅠㅠ
:
: 고황일 님이 쓰신 글 :
: : 안녕하세요?... 여기도 비가 많이 내리는 군요.. 여긴 인천.. ^^
: :
: : Destinyz님의 코드에서 DBFileName이 서로다른 ADOConnection에서 같던데...
: : 파일을 DB로 사용하실 경우에 다른 Connection을 할 수 없습니다.
: : 그게 문제 인거 같군요. 에러 내용은.. 저는 국문으로 나와서... 쩝.
: :
: : 첫번째 Connection에서는 에러가 발생하지 않는데
: : 두번째 Connection에서는 DB설정 파일 연결이 없다는 에러가 나오네요.
: : 다른 DB파일을 사용하시던지요 아니면 Connection을 공유하세요
: :
: : 이런 방법은 어떠실지요...
: :  void __fastcall TForm1::Timer1Timer(TObject *Sender)
: :  {
: :         Timer1->Enabled=false;
: :          String ExecutePath=ExtractFilePath(Application->ExeName)+"DB\\";
: :          String DBFileName="FileDB.mdb";
: :          FileDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
: :          FileDataBase->ADOConnection1->Connected=true;
: :          FileDataBase->ADOQuery1->Active=true;
: : //         DBFileName="FileDB.mdb";
: : //         SpyDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
: : //         SpyDataBase->ADOConnection1->Connected=true;
: :        
: : /* SpyDataBase가 하나의 폼이 라면.. FileDataBase 폼의 헤더를 Include시키고.. */
: :          SpyDataBase->ADOQuery1->Connection = FileDataBase->ADOConnection1;
: : // ADOConnection은  FileDataBase에 있는 Connection을 이용한다.
: :          SpyDataBase->ADOQuery1->Active=true;
: :          Form1->Hide();
: :          Form2->Show();
: :  }
: :
: : 아니면.. 디지인 타임에서 SpyDataBase의 ADOQuery1의 Connection을 FileDataBase->ADOConnection1로
: : 지정 해놓으셔도 됩니다.
: :
: : 그럼..
: : Destinyz 님이 쓰신 글 :
: : : 안녕하세요, Destinyz입니다^^ 제가 살고 있는 서울에 하늘에 구멍이 뚫린듯 비가 엄청나게 쏟아집니다^^ 이미 피해를 입으셨거나 저지대에 사시는분들, 부디 무사하시고 피해없으시길 바랍니다.
: : :
: : : 다름이 아니라 또 데이터베이스 ADO에 대해서 질문을 드리고자 합니다^^
: : :
: : : 저번 질문에서, 고황일 님과 김태정 님께서 좋은 답변 달아주셨는데요, 고황일 님의 답변대로 하는 도중 또 첨부파일과 같은 에러가 났습니다. 권한 문제인것 같기도 하구...
: : :
: : : 전 맨처음 실행되는 Form1에 타이머에 설정을 했습니다. 아래는 제가 고황일 님의 말씀대로 해본 것 입니다.(김태정 님께서 일러주신대로 한 것도 있습니다(Default Database에서 ".\DB"라고 설정함.)
: : :
: : : //////////
: : : // 1초가 지나면 아래의 소스코드가 실행됩니다.
: : :
: : : void __fastcall TForm1::Timer1Timer(TObject *Sender)
: : : {
: : :         Timer1->Enabled=false;
: : :         String ExecutePath=ExtractFilePath(Application->ExeName)+"DB\\";
: : :         String DBFileName="FileDB.mdb";
: : :         FileDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
: : :         FileDataBase->ADOConnection1->Connected=true;
: : :         FileDataBase->ADOQuery1->Active=true;
: : :         DBFileName="FileDB.mdb";
: : :         SpyDataBase->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExecutePath+DBFileName+";Persist Security Info=False";
: : :         SpyDataBase->ADOConnection1->Connected=true;
: : :         SpyDataBase->ADOQuery1->Active=true;
: : :         Form1->Hide();
: : :         Form2->Show();
: : : }
: : :
: : : /////////
: : :
: : : 제가 잘 못한것일 수도 있습니다. 제가 잘못한 부분이 있다면 옳게 일러주시옵고, 그 오류창에 대한 말씀도 해주시기바랍니다.
: : : 참신하고 좋은 답변 기다리고 있겠습니다. 감사합니다^^

+ -

관련 글 리스트
45889 또 데이터베이스(ADO)에 대해 질문이요^^ Destinyz 1043 2006/07/27
45892     Re:또 데이터베이스(ADO)에 대해 질문이요^^ 고황일 888 2006/07/28
45901         Re:Re:또 데이터베이스(ADO)에 대해 질문이요^^ Destinyz 922 2006/07/28
45907             Re:Re:Re:또 데이터베이스(ADO)에 대해 질문이요^^ 고황일 971 2006/07/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.