線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4797
推到 Plurk!
推到 Facebook!

C++ Builder 6.0 + ODAC失敗...

答題得分者是:GrandRURU
don750421
一般會員


發表:11
回覆:12
積分:4
註冊:2012-09-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-10-30 09:43:57 IP:60.249.xxx.xxx 訂閱
請問一下,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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-10-30 15:40:25 IP:59.120.xxx.xxx 訂閱
IP正確嗎?Oracle有將TNS開啟嗎?

建議你直接將執行檔拿到Oracle的主機上先試測,再測遠端連線

順便幫你補上貼圖 ===================引 用 don750421 文 章===================
請問一下,BCB 6.0如何使用ODAC呢??
ODAC元件我已經安裝成功,我先拉一個元件ORASESSION元件做測試連線
但是Compiler一直出錯...如下圖
PPT.cc縮圖服務

[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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-10-30 16:00:58 IP:60.249.xxx.xxx 訂閱
您好,IP是正確的...
程式之前是透過Visual C MFC寫的,後來想改用BCB寫寫看
原先MFC寫的連線OK,BCB應該不需要額外去設定吧?!

===================引 用 GrandRURU 文 章===================
IP正確嗎?Oracle有將TNS開啟嗎?

建議你直接將執行檔拿到Oracle的主機上先試測,再測遠端連線

順便幫你補上貼圖
===================引 用 don750421 文 章===================
請問一下,BCB 6.0如何使用ODAC呢??
ODAC元件我已經安裝成功,我先拉一個元件ORASESSION元件做測試連線
但是Compiler一直出錯...如下圖
PPT.cc縮圖服務

[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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-10-30 16:23:20 IP:59.120.xxx.xxx 訂閱
我曾經用過一次,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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-11-01 00:21:14 IP:114.47.xxx.xxx 訂閱
您好,更換成以下的寫法之後,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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2012-11-01 09:52:24 IP:59.120.xxx.xxx 訂閱
一、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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2012-11-01 22:16:48 IP:114.47.xxx.xxx 訂閱
不好意思!!可能我表達不清楚...
假設有一個Table如下
NumberbirthLOT_NUMBERsexphone
T12345678975112111122boy029872264
S12354685263032498751girl039854452
G15643215480011895422boy026584136
Z542138545478043039872girl046852341

我希望藉由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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2012-11-02 09:01:07 IP:59.120.xxx.xxx 訂閱
呃…我也不知道要如何表達咧

請你參考一下我是個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如下
NumberbirthLOT_NUMBERsexphone
T12345678975112111122boy029872264
S12354685263032498751girl039854452
G15643215480011895422boy026584136
Z542138545478043039872girl046852341

我希望藉由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;"> <iframe name="content"></iframe>
don750421
一般會員


發表:11
回覆:12
積分:4
註冊:2012-09-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2012-11-02 11:26:33 IP:60.249.xxx.xxx 訂閱
成功了!!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如下
NumberbirthLOT_NUMBERsexphone
T12345678975112111122boy029872264
S12354685263032498751girl039854452
G15643215480011895422boy026584136
Z542138545478043039872girl046852341

我希望藉由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;"> <iframe name="content"></iframe>
系統時間:2024-04-27 0:32:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!