|
기본적인 문제네요.
소스상에서 생성을 하셔서 사용하시겠다는건데.
TAdoQuery 를 __published 가 아닌 private이나 public에 선언하시고
당연히 사용하기전
생성을 해주시고
사용하신이후 해제도 해주셔야겠죠.
흑흑 님이 쓰신 글 :
: 아 그러네요.. 감사합니다..수정했어요..
: 그런데 다른 cpp파일에 저 fnExecSQL 함수 사용하려면
:
: Db->fnExecSQL 이렇게 사용하면 되는거 아닌가요..???
:
: 근데
: DB-> 이렇게 하면 아래와 같이 에러가 나옵니다....
:
: [C++ Error] LThread.cpp(1): Unable to invoke Code Completion due to errors in source code
: 이렇게 에러가납니다..
:
: 폼위에 만들수 없는 상황이라 팁을 얻어
: TDataModule로 사용하고, 거기에 선언한 함수를 다른 CPP파일에서 사용해야되는데.. 참 어렵네요..ㅠ
:
:
:
:
:
:
: kylix 님이 쓰신 글 :
: : 선언은 TDataModule1의 메소드로 선언하셨는데 함수로 만드셨네요.
: :
: : void __fastcall fnExecSQL(AnsiString sSql)
: : {
: : ......
: : }
: : ==>
: : void __fastcall TDataModule1::fnExecSQL(AnsiString sSql)
: : {
: : ........
: : }
: :
: : 흑흑 님이 쓰신 글 :
: : : 빌더 6버전이구요,,
: : :
: : : : #include <ADODB.hpp>
: : : : #include <DB.hpp>이거 두개는 추가가 되어있길래
: : : : #include <DBClient.hpp>이거하나 포함시켰는데요.. 에러내용은 같습니다...
: : : 뭐가문제일까요...ㅠ
: : :
: : : 땅주인 님이 쓰신 글 :
: : : : Header file에 추가하세요..
: : : : XE 시리즈이면 .. 아래처럼..
: : : :
: : : : #include <Data.Win.ADODB.hpp>
: : : :
: : : : 그 이하 버젼이면 ..
: : : :
: : : : #include <ADODB.hpp>
: : : : #include <DB.hpp>
: : : : #include <DBClient.hpp>
: : : :
: : : : 이와 연관된 헤더 파일들을 include 시켜주면 됩니다.
: : : :
: : : :
: : : : 흑흑 님이 쓰신 글 :
: : : : : 말씀해주신대로 추가해서
: : : : : TADOConnection *ADOConnection1;
: : : : : TADOQuery *ADOQuery1;
: : : : : 아이콘 올려놓았구요,
: : : : : 그런데 에러가 납니다...
: : : : : [C++ Error] DBmodule.cpp(19): E2451 Undefined symbol 'ADOQuery1'
: : : : : [C++ Error] DBmodule.cpp(27): E2451 Undefined symbol 'ADOQuery1'
: : : : : 이렇게 에러가 나는데요..
: : : : : 왜나는걸까요... 헤더파일에 선언해주었는데..
: : : : :
: : : : :
: : : : :
: : : : :
: : : : : //헤더파일
: : : : :
: : : : : class TDataModule1 : public TDataModule
: : : : : {
: : : : : __published: // IDE-managed Components
: : : : : TADOConnection *ADOConnection1;
: : : : : TADOQuery *ADOQuery1;
: : : : : TADOQuery *qryMain;
: : : : : private: // User declarations
: : : : : public: // User declarations
: : : : : AnsiString sSql;
: : : : : __fastcall TDataModule1(TComponent* Owner);
: : : : : void __fastcall fnExecSQL(AnsiString sSql);
: : : : : void __fastcall fnSQL(AnsiString sSql);
: : : : :
: : : : : };
: : : : :
: : : : :
: : : : : //소스파일
: : : : :
: : : : : TDataModule1 *DataModule1;
: : : : : //---------------------------------------------------------------------------
: : : : : __fastcall TDataModule1::TDataModule1(TComponent* Owner)
: : : : : : TDataModule(Owner)
: : : : : {
: : : : : }
: : : : : //---------------------------------------------------------------------------
: : : : : void __fastcall fnExecSQL(AnsiString sSql)
: : : : : {
: : : : : ADOQuery1->Close();
: : : : : ADOQuery1->SQL->Clear();
: : : : : ADOQuery1->SQL->Add(sSql);
: : : : : ADOQuery1->ExecSQL();
: : : : : }
: : : : : //---------------------------------------------------------------------------
: : : : : void __fastcall fnSQL(AnsiString sSql)
: : : : : {
: : : : : ADOQuery1->Close();
: : : : : ADOQuery1->SQL->Clear();
: : : : : ADOQuery1->SQL->Add(sSql);
: : : : : ADOQuery1->Open();
: : : : : }
: : : : : //---------------------------------------------------------------------------
: : : : :
: : : : :
: : : : : 입니다..
: : : : :
: : : : :
: : : : : ADOQuery1
: : : : :
: : : : : 땅주인 님이 쓰신 글 :
: : : : : : TDataModule이라는 Unit이 따로 있구요,
: : : : : : 이것은 Form이 없는 형태의 기능을 만들 때 유용합니다. 폼은 없지만,
: : : : : : Timer Event나 TQuery등의 이벤트도 모두 받을 수 있습니다.
: : : : : :
: : : : : : 흑흑 님이 쓰신 글 :
: : : : : : : 폼은 따로 있고, cpp파일 하나 추가해서 DB컨트롤 하고싶은데요.
: : : : : : : 폼이 없으니 TADOQuery 추가해도 cpp파일에서는 사용이 안되더라구요,
: : : : : : : 그래서 따로 TADOQuery *q; 라고 cpp 헤더파일에 선언해도..안되는데
: : : : : : : 어떻게 사용할수있나요?
|