C++ Builder 6.0 + ODAC失敗... |
答題得分者是:GrandRURU
|
don750421
一般會員 ![]() ![]() 發表:11 回覆:12 積分:4 註冊:2012-09-27 發送簡訊給我 |
請問一下,BCB 6.0如何使用ODAC呢??
ODAC元件我已經安裝成功,我先拉一個元件ORASESSION元件做測試連線 但是Compiler一直出錯...如下圖 ppt.cc/Fw8~ [code cpp] //--------------------------------------------------------------------------- __fastcall TLoginForm::TLoginForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TLoginForm::FormCreate(TObject *Sender) { orsnLogin->Open(); orsnLogin->Server="192.168.1.10:1521:TEST"; orsnLogin->Username="test"; orsnLogin->Password="test123"; orsnLogin->Connect(); } //--------------------------------------------------------------------------- void __fastcall TLoginForm::btnLoginClick(TObject *Sender) { ShowMessage("OK"); } //--------------------------------------------------------------------------- void __fastcall TLoginForm::btnExitClick(TObject *Sender) { orsnLogin->Disconnect(); Close(); } //--------------------------------------------------------------------------- [/code] | |||||||||||||||||||||||||
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
IP正確嗎?Oracle有將TNS開啟嗎?
建議你直接將執行檔拿到Oracle的主機上先試測,再測遠端連線 順便幫你補上貼圖 ===================引 用 don750421 文 章=================== 請問一下,BCB 6.0如何使用ODAC呢?? ODAC元件我已經安裝成功,我先拉一個元件ORASESSION元件做測試連線 但是Compiler一直出錯...如下圖 ![]() [code cpp] //--------------------------------------------------------------------------- __fastcall TLoginForm::TLoginForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TLoginForm::FormCreate(TObject *Sender) { orsnLogin->Open(); orsnLogin->Server="192.168.1.10:1521:TEST"; orsnLogin->Username="test"; orsnLogin->Password="test123"; orsnLogin->Connect(); } //--------------------------------------------------------------------------- void __fastcall TLoginForm::btnLoginClick(TObject *Sender) { ShowMessage("OK"); } //--------------------------------------------------------------------------- void __fastcall TLoginForm::btnExitClick(TObject *Sender) { orsnLogin->Disconnect(); Close(); } //--------------------------------------------------------------------------- [/code] |
|||||||||||||||||||||||||
don750421
一般會員 ![]() ![]() 發表:11 回覆:12 積分:4 註冊:2012-09-27 發送簡訊給我 |
您好,IP是正確的...
程式之前是透過Visual C MFC寫的,後來想改用BCB寫寫看 原先MFC寫的連線OK,BCB應該不需要額外去設定吧?! ===================引 用 GrandRURU 文 章=================== IP正確嗎?Oracle有將TNS開啟嗎? 建議你直接將執行檔拿到Oracle的主機上先試測,再測遠端連線 順便幫你補上貼圖 ===================引 用 don750421 文 章=================== 請問一下,BCB 6.0如何使用ODAC呢?? ODAC元件我已經安裝成功,我先拉一個元件ORASESSION元件做測試連線 但是Compiler一直出錯...如下圖 ![]() [code cpp] //--------------------------------------------------------------------------- __fastcall TLoginForm::TLoginForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TLoginForm::FormCreate(TObject *Sender) { orsnLogin->Open(); orsnLogin->Server="192.168.1.10:1521:TEST"; orsnLogin->Username="test"; orsnLogin->Password="test123"; orsnLogin->Connect(); } //--------------------------------------------------------------------------- void __fastcall TLoginForm::btnLoginClick(TObject *Sender) { ShowMessage("OK"); } //--------------------------------------------------------------------------- void __fastcall TLoginForm::btnExitClick(TObject *Sender) { orsnLogin->Disconnect(); Close(); } //--------------------------------------------------------------------------- [/code] |
|||||||||||||||||||||||||
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
我曾經用過一次,BDE可以直接無痛替換,沒有你說的問題
不過你再試試看這個好了 [code cpp] //orsnLogin->Open(); // 先把這行拿掉 orsnLogin->Options->Net = true; // 追加這行試試,不行也拿掉 orsnLogin->Server="192.168.1.10:1521:TEST"; orsnLogin->Username="test"; orsnLogin->Password="test123"; orsnLogin->Connect(); [/code] |
|||||||||||||||||||||||||
don750421
一般會員 ![]() ![]() 發表:11 回覆:12 積分:4 註冊:2012-09-27 發送簡訊給我 |
您好,更換成以下的寫法之後,Compiler會過..
但是,這樣User端還需要安裝Oracle Client嗎? 另外,請問一下,如果使用SQL語法查詢特定資料,那麼SQL可以寫在同一段嗎??(如下) 因為我看有些書籍會寫成兩段,一段寫select * from peoplefile,那我的寫法有錯誤嗎?? [code cpp] Number="T123456789"; orsnQuWafer->Options->Net=True; orsnQuWafer->Server="192.168.1.10:1521:TEST"; orsnQuWafer->Username="test"; orsnQuWafer->Password="test123"; orsnQuWafer->Connect(); orqryLotNum->Session=orsnQuWafer; orqryLotNum->SQL->Clear(); orqryLotNum->SQL->Add("select * from peoplefile where RECEIPT_NUMBER =:Number"); orqryLotNum->ParamByName("LOT_NUMBER")->AsString=edtLotNumber->Text; if(!orqryLotNum) orqryLotNum->Prepare(); orqryLotNum->Open(); [/code] ===================引 用 GrandRURU 文 章=================== 我曾經用過一次,BDE可以直接無痛替換,沒有你說的問題 不過你再試試看這個好了 [code cpp] //orsnLogin->Open(); // 先把這行拿掉 orsnLogin->Options->Net = true; // 追加這行試試,不行也拿掉 orsnLogin->Server="192.168.1.10:1521:TEST"; orsnLogin->Username="test"; orsnLogin->Password="test123"; orsnLogin->Connect(); [/code] |
|||||||||||||||||||||||||
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
一、User端可以不安裝 Client Driver
二、我應該會這樣寫 [code cpp] Number="T123456789"; orsnQuWafer->Options->Net=True; orsnQuWafer->Server="192.168.1.10:1521:TEST"; orsnQuWafer->Username="test"; orsnQuWafer->Password="test123"; orsnQuWafer->Connect(); orqryLotNum->Session=orsnQuWafer; if (orqryLotNum->Active == true) orqryLotNum->Close(); orqryLotNum->SQL->Clear(); orqryLotNum->SQL->Add("select * from peoplefile where RECEIPT_NUMBER =:Number"); //orqryLotNum->ParamByName("LOT_NUMBER")->AsString=edtLotNumber->Text; <- 這邊指的應該是你的「參數-Number」 orqryLotNum->ParamByName("Number")->AsString=edtLotNumber->Text; //if(!orqryLotNum) orqryLotNum->Prepare(); orqryLotNum->Open(); [/code]
編輯記錄
GrandRURU 重新編輯於 2012-10-31 20:06:39, 註解 無‧
|
|||||||||||||||||||||||||
don750421
一般會員 ![]() ![]() 發表:11 回覆:12 積分:4 註冊:2012-09-27 發送簡訊給我 |
不好意思!!可能我表達不清楚...
假設有一個Table如下
我希望藉由Number來找到LOT_NUMBER,並且將找到的LOT_NUMBER顯示在edtLotNumber 藉由Grand前輩的寫法?感覺好像是將Number顯示在edtLotNumber中... 是我理解錯誤嗎?? ===================引 用 GrandRURU 文 章=================== 一、User端可以不安裝 Client Driver 二、我應該會這樣寫 [code cpp] Number="T123456789"; orsnQuWafer->Options->Net=True; orsnQuWafer->Server="192.168.1.10:1521:TEST"; orsnQuWafer->Username="test"; orsnQuWafer->Password="test123"; orsnQuWafer->Connect(); orqryLotNum->Session=orsnQuWafer; if (orqryLotNum->Active == true) orqryLotNum->Close(); orqryLotNum->SQL->Clear(); orqryLotNum->SQL->Add("select * from peoplefile where RECEIPT_NUMBER =:Number"); //orqryLotNum->ParamByName("LOT_NUMBER")->AsString=edtLotNumber->Text; <- 這邊指的應該是你的「參數-Number」 orqryLotNum->ParamByName("Number")->AsString=edtLotNumber->Text; //if(!orqryLotNum) orqryLotNum->Prepare(); orqryLotNum->Open(); [/code] |
|||||||||||||||||||||||||
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
呃…我也不知道要如何表達咧
請你參考一下我是個delphi新人,對fieldbyname和parambyname兩個方法不了解 底下節錄內容 [code delphi] with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('select * from table1 where id=:Param1'); Parameters.parambyname('Param1').Value:='123'; SQL.Open; showmessage('id=' fieldbyname('id').asstring); end; //parambyname操作參數,fieldbyname操作字段 [/code] 語法和C 差不多,應該不難理解才是 ===================引 用 don750421 文 章=================== 不好意思!!可能我表達不清楚... 假設有一個Table如下
我希望藉由Number來找到LOT_NUMBER,並且將找到的LOT_NUMBER顯示在edtLotNumber 藉由Grand前輩的寫法?感覺好像是將Number顯示在edtLotNumber中... 是我理解錯誤嗎?? ===================引 用 GrandRURU 文 章=================== 一、User端可以不安裝 Client Driver 二、我應該會這樣寫 [code cpp] Number="T123456789"; orsnQuWafer->Options->Net=True; orsnQuWafer->Server="192.168.1.10:1521:TEST"; orsnQuWafer->Username="test"; orsnQuWafer->Password="test123"; orsnQuWafer->Connect(); orqryLotNum->Session=orsnQuWafer; if (orqryLotNum->Active == true) orqryLotNum->Close(); orqryLotNum->SQL->Clear(); orqryLotNum->SQL->Add("select * from peoplefile where RECEIPT_NUMBER =:Number"); //orqryLotNum->ParamByName("LOT_NUMBER")->AsString=edtLotNumber->Text; <- 這邊指的應該是你的「參數-Number」 orqryLotNum->ParamByName("Number")->AsString=edtLotNumber->Text; //if(!orqryLotNum) orqryLotNum->Prepare(); orqryLotNum->Open(); [/code] <style type="text/css"> qtl { position: absolute; border: 1px solid #cccccc; -moz-border-radius: 5px; opacity: 0.2; line-height: 100%; z-index: 999; direction: ltr; } qtl:hover,qtl.open { opacity: 1; } qtl,qtlbar { height: 22px; } qtlbar { display: block; width: 100%; background-color: #cccccc; cursor: move; } qtlbar img { border: 0; padding: 3px; height: 16px; width: 16px; cursor: pointer; } qtlbar img:hover { background-color: #aaaaff; } qtl>iframe { border: 0; height: 0; width: 0; } qtl.open { height: auto; } qtl.open>iframe { height: 200px; width: 300px; } </style><qtl none; left: 447px; top: 58px;"> ![]() |
|||||||||||||||||||||||||
don750421
一般會員 ![]() ![]() 發表:11 回覆:12 積分:4 註冊:2012-09-27 發送簡訊給我 |
成功了!!THX
原來SQL->Add()裡面不能直接使用變數 所以必須透過ParamByName代值進去... [code cpp] Number="T123456789"; orsnQuWafer->Options->Net=True; orsnQuWafer->Server="192.168.1.10:1521:TEST"; orsnQuWafer->Username="test"; orsnQuWafer->Password="test123"; orsnQuWafer->Connect(); orqryLotNum->Session=orsnQuWafer; if (orqryLotNum->Active == true) orqryLotNum->Close(); orqryLotNum->SQL->Clear(); orqryLotNum->SQL->Add("select * from peoplefile where RECEIPT_NUMBER =:Number"); orqryLotNum->ParamByName("Number")->Value=Number; //if(!orqryLotNum) orqryLotNum->Prepare(); orqryLotNum->Open(); edtLotNumber->Text=orqryLotNum->FieldByName("LOT_NUMBER")->AsString;//把資料庫的值顯示在edtLotNumber欄位 [/code] ===================引 用 GrandRURU 文 章=================== 呃…我也不知道要如何表達咧 請你參考一下我是個delphi新人,對fieldbyname和parambyname兩個方法不瞭解 底下節錄內容 [code delphi] with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('select * from table1 where id=:Param1'); Parameters.parambyname('Param1').Value:='123'; SQL.Open; showmessage('id=' fieldbyname('id').asstring); end; //parambyname操作參數,fieldbyname操作字段 [/code] 語法和C 差不多,應該不難理解才是 ===================引 用 don750421 文 章=================== 不好意思!!可能我表達不清楚... 假設有一個Table如下
我希望藉由Number來找到LOT_NUMBER,並且將找到的LOT_NUMBER顯示在edtLotNumber 藉由Grand前輩的寫法?感覺好像是將Number顯示在edtLotNumber中... 是我理解錯誤嗎?? ===================引 用 GrandRURU 文 章=================== 一、User端可以不安裝 Client Driver 二、我應該會這樣寫 [code cpp] Number="T123456789"; orsnQuWafer->Options->Net=True; orsnQuWafer->Server="192.168.1.10:1521:TEST"; orsnQuWafer->Username="test"; orsnQuWafer->Password="test123"; orsnQuWafer->Connect(); orqryLotNum->Session=orsnQuWafer; if (orqryLotNum->Active == true) orqryLotNum->Close(); orqryLotNum->SQL->Clear(); orqryLotNum->SQL->Add("select * from peoplefile where RECEIPT_NUMBER =:Number"); //orqryLotNum->ParamByName("LOT_NUMBER")->AsString=edtLotNumber->Text; <- 這邊指的應該是你的「參數-Number」 orqryLotNum->ParamByName("Number")->AsString=edtLotNumber->Text; //if(!orqryLotNum) orqryLotNum->Prepare(); orqryLotNum->Open(); [/code] <style type="text/css"> qtl { position: absolute; border: 1px solid #cccccc; -moz-border-radius: 5px; opacity: 0.2; line-height: 100%; z-index: 999; direction: ltr; } qtl:hover,qtl.open { opacity: 1; } qtl,qtlbar { height: 22px; } qtlbar { display: block; width: 100%; background-color: #cccccc; cursor: move; } qtlbar img { border: 0; padding: 3px; height: 16px; width: 16px; cursor: pointer; } qtlbar img:hover { background-color: #aaaaff; } qtl>iframe { border: 0; height: 0; width: 0; } qtl.open { height: auto; } qtl.open>iframe { height: 200px; width: 300px; } </style><qtl none; left: 447px; top: 58px;"> ![]() |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |