|
쩝쩝.. 자문자답하네여...
절대로 FormCreate에 넣지 말아야 겠네요...
OnActivate 이벤트의 함수에 넣으니 제대로 작동되네여.. 쩝쩝..
FormCreate는 어플리케이션 시작할때 구동이 되는 곳이군요.. 쩝쩝..
언제나 초볼 벗어날지... ^^;;
그럼 이만.
정명기 님이 쓰신 글 :
: 우선 너무나도 초보임을 밝힙니다. 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로 설정해 놓은 상태입니다.
:
: 여러 고수님들의 자문을 구합니다.
:
: 그럼 이만.
:
|