查詢關鍵字問題 |
答題得分者是:st33chen
|
zoezoe
一般會員 發表:10 回覆:25 積分:12 註冊:2009-04-28 發送簡訊給我 |
這是小弟查詢程式中的一小塊程式
[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 發送簡訊給我 |
|
zoezoe
一般會員 發表:10 回覆:25 積分:12 註冊:2009-04-28 發送簡訊給我 |
|
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
看你的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 發送簡訊給我 |
您好
不用 參數形語法, 直接組字串 試試看 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |