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
[22092] [질문]ADOQuery에서 EAccessViolation 이 걸립니다. 도와주세요.
정명기 [bright] 851 읽음    2002-10-17 19:00
우선 너무나도 초보임을 밝힙니다. T.T;;

소스는 다음과 같습니다.

void __fastcall TUnit_Dlg::FormCreate(TObject *Sender)
{
    int nRow = 1;
    try {
        Oracle->OraQuery->SQL->Text = "SELECT * FROM UNIT";    // <<-- 이부분입니다.
        if (!Oracle->OraQuery->Prepared)
            Oracle->OraQuery->Prepared = true;

        Oracle->OraQuery->Open();
        Oracle->OraQuery->ExecSQL();

        UnitGrid->RowCount = Oracle->OraQuery->RecordCount + 1;
        UnitGrid->Cells[0][0] = "번호";
        UnitGrid->Cells[1][0] = "단위명";
        UnitGrid->Cells[2][0] = "수정";
        UnitGrid->Cells[3][0] = "삭제";
        UnitGrid->ColWidths[1] = 50;

        while (Oracle->OraQuery->Eof)  {
            UnitGrid->Cells[0][nRow] =
                Oracle->OraQuery->FieldByName("unit_num")->AsString;
            UnitGrid->Cells[1][nRow] =
                Oracle->OraQuery->FieldByName("unit_content")->AsString;
            UnitGrid->Cells[2][nRow] = "[수정]";
            UnitGrid->Cells[3][nRow++] = "[삭제]";

            Oracle->OraQuery->Next();
        }
        Oracle->OraQuery->Close();
    } catch (Exception &e)  {
        ShowMessage("Error : " + e.Message);
    }
}
DataModule을 따로 두고 거기에 TADOConnection, TADOQuery를 두었습니다.
DataModule 이름은 Oracle로 하였고요..
이 코드가 들어 있는 곳은 Sub Form입니다.
문제는 컴파일하고 실행할려고만 하면 위의 // <<-- 이부분입니다.  에서 에러가 발생하는 겁니다.
디버거 상에서 보면 Oracle 이 Null 로 되어 있는 것으로 보입니다.
짧은 생각에는 Unit_Dlg라는 서브폼이 어플리케이션이 실행되어질때 같이 만들어 지면서 connection이 이루어지기 전에 DataModule을 참조하려고 하는 것 때문에 발생되는 문제인거 같습니다만...
그렇다면 서브폼은 어떻게 정의를 하여야 할까요? 어떤 property 를 설정해야지만 처음부터 form2가 만들어 지지 않겠는지요... 참고로 메인폼에서는 Unit_Dlg->ShowModal(); 로 부르려고 합니다.
지금 서브폼의 property중 Enabled, Visible은 true로 되어 있습니다.

아참.. 그리고 DataModule에서 TADOConnection의 property중 Connected는 true로 LoginPrompt는 false로 설정해 놓은 상태입니다.

여러 고수님들의 자문을 구합니다.

그럼 이만.

+ -

관련 글 리스트
22092 [질문]ADOQuery에서 EAccessViolation 이 걸립니다. 도와주세요. 정명기 851 2002/10/17
22093     Re:[질문]ADOQuery에서 EAccessViolation 이 걸립니다. 도와주세요. 정명기 1097 2002/10/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.