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

查詢關鍵字問題

答題得分者是:st33chen
zoezoe
一般會員


發表:10
回覆:25
積分:12
註冊:2009-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-07 17:10:31 IP:60.248.xxx.xxx 訂閱
這是小弟查詢程式中的一小塊程式

[code cpp]
void __fastcall TForm_main::Edit_supKeyPress(TObject *Sender, char &Key)
{
if (Key == 13)
{
if ((ActiveControl->TabOrder > 2) && (Edit_sup->Text == ""))
{
ShowMessage("不可為空白,請重新輸入");
Edit_sup->SetFocus();
}
else
{
ADOQuery1->SQL->Clear();
ADOQuery1->Close();
ADOQuery1->SQL->Add("select * from pur_work where pur_sup like:pur_sup");
ADOQuery1->Parameters->ParamByName("pur_sup")->Value = Edit_sup->Text '%';
ADOQuery1->ExecSQL();
ADOQuery1->Open();
if (ADOQuery1->IsEmpty())
{
ShowMessage("查無資料,請重新確認");
Edit_sup->Text = "";
Edit_sup->SetFocus();
}
else
{
Form_sup->Show();
Edit_sup->Text = ADOQuery1->FieldByName("pur_sup")->AsString;
}
}
}
}

[/code]

小弟現在的問題是,我在一個Edit上輸入關鍵字,EX:5738九大科技 我只要輸入5738 或者只輸入九大
就秀出Form_sup這個Form裡面做查詢,然後在Form_sup這個Form裡面的DBGrid選擇我要的資料按兩下便會出現在主Form的Edit上
可是我現在就只能查詢到開頭,而不能做隨意關鍵字查詢呢。我有試過'%' Edit_sup '%'還是不行!會出現錯誤~只能把'%'加在後面而已
然後我只要按Enter就會直接把我Form_sup裡面DBGrid的第一個資料放上我主Form的Edit上,我是想要按DBGrid上的資料會隨著我按而更改
試過好幾次了,其他都沒有問題就剩下這個了。請各位前輩們幫我想想辦法~謝謝
編輯記錄
zoezoe 重新編輯於 2009-05-07 17:12:25, 註解 無‧
helsing
一般會員


發表:7
回覆:15
積分:4
註冊:2004-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-07 21:21:19 IP:203.73.xxx.xxx 訂閱
不過你可以把資料寫出到一個暫存值,然後用
temp.AnsiPos("關鍵字"),去找 if (temp.AnsiPos("關鍵字"))有找到去把資料叫出來.
編輯記錄
helsing 重新編輯於 2009-05-07 21:23:04, 註解 無‧
zoezoe
一般會員


發表:10
回覆:25
積分:12
註冊:2009-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-08 08:19:48 IP:60.248.xxx.xxx 訂閱
不好意思,我不太懂你的說法呢!
有沒有辦法像我所要求的做呢?
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-08 09:52:31 IP:203.79.xxx.xxx 訂閱
看你的Code 有點怪怪的
ADOQuery1->ExecSQL();
ADOQuery1->Open();
又ExecSQL() 又 Open() 的, Select 的語法應該只要 Open() 就好了吧

ADOQuery1->SQL->Add("select * from pur_work where pur_sup like:pur_sup");
ADOQuery1->Parameters->ParamByName("pur_sup")->Value = Edit_sup->Text '%';


在like 後面多加個空白,我不確定這是不是會有影響,試看看吧
ADOQuery1->SQL->Add("select * from pur_work where pur_sup like :pur_sup");
ADOQuery1->Parameters->ParamByName("pur_sup")->Value ='%' Edit_sup->Text '%';


或是直接改成
ADOQuery1->SQL->Add("select * from pur_work where pur_sup like '%" Edit_sup->Text "%' ");


手頭上沒有 BCB ,您可以試看看


===================引 用 zoezoe 文 章===================
這是小弟查詢程式中的一小塊程式

[code cpp]
void __fastcall TForm_main::Edit_supKeyPress(TObject *Sender, char &Key)
{
if (Key == 13)
{
if ((ActiveControl->TabOrder > 2) && (Edit_sup->Text == ""))
{
ShowMessage("不可為空白,請重新輸入");
Edit_sup->SetFocus();
}
else
{
ADOQuery1->SQL->Clear();
ADOQuery1->Close();
ADOQuery1->SQL->Add("select * from pur_work where pur_sup like:pur_sup");
ADOQuery1->Parameters->ParamByName("pur_sup")->Value = Edit_sup->Text '%';
ADOQuery1->ExecSQL();
ADOQuery1->Open();
if (ADOQuery1->IsEmpty())
{
ShowMessage("查無資料,請重新確認");
Edit_sup->Text = "";
Edit_sup->SetFocus();
}
else
{
Form_sup->Show();
Edit_sup->Text = ADOQuery1->FieldByName("pur_sup")->AsString;
}
}
}
}

[/code]

小弟現在的問題是,我在一個Edit上輸入關鍵字,EX:5738九大科技 我只要輸入5738 或者只輸入九大
就秀出Form_sup這個Form裡面做查詢,然後在Form_sup這個Form裡面的DBGrid選擇我要的資料按兩下便會出現在主Form的Edit上
可是我現在就只能查詢到開頭,而不能做隨意關鍵字查詢呢。我有試過'%' Edit_sup '%'還是不行!會出現錯誤~只能把'%'加在後面而已
然後我只要按Enter就會直接把我Form_sup裡面DBGrid的第一個資料放上我主Form的Edit上,我是想要按DBGrid上的資料會隨著我按而更改
試過好幾次了,其他都沒有問題就剩下這個了。請各位前輩們幫我想想辦法~謝謝
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-08 09:53:26 IP:122.116.xxx.xxx 未訂閱
您好

不用 參數形語法, 直接組字串 試試看

ADOQuery1->SQL->Add("select * from pur_work where pur_sup like '%" edit_sup->text "%'"); <--注意空格, 單雙引號
// ADOQuery1->Parameters->ParamByName("pur_sup")->Value = Edit_sup->Text '%'; <-- 註掉
// ADOQuery1->ExecSQL(); <-- select 是 open 式, 不需要用 execsql.
ADOQuery1->Open();
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
zoezoe
一般會員


發表:10
回覆:25
積分:12
註冊:2009-04-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-05-08 11:19:42 IP:60.248.xxx.xxx 訂閱
沒錯,之後想說不用參數值直接下就OK了。謝謝你們回答~
至於我會先打ExceSQL 是因為之前都打習慣了啦!習慣兩個一起打出來~^^"
系統時間:2017-12-18 14:52:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!