如何輸入數值取得資料庫的資料 |
尚未結案
|
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
請教各位大大,如何在edit內輸入數值,進而取得資料庫的資料
我要設計的是輸入一筆數字,這數字與欄位P_ID的值相等。
進而在DBGrid顯示出資料庫表單的所有欄位。
資料庫是使用MsSQL,我已經用ADO連接好資料庫了。
以下是我的寫法:
void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
if(Edit1->Text=="")return;
int Id=Edit1->Text.ToInt();
ADOQuery1->SQL->Add("Select * from product");
ADOQuery1->SQL->Add("Where Id=P_ID");
ADOQuery1->Parameters("Id")->AsInteger=Edit1->Text.ToInt()
ADOQuery1->Prepared=true;
ADOQuery1->Open();
ADOQuery1->ExecSQL();
}
在執行後紅色那行有bug,「call of nonfunction 」 請幫個忙~~謝謝。 發表人 - jace0421 於 2005/08/08 22:50:45
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
void __fastcall TForm1::Edit1Enter(TObject *Sender) { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("Select * from product Where Id=:P_ID"); //假設ID是你的欄位 ADOQuery1->Parameters->ParamByName("P_ID")->Value=Edit1->Text; ADOQuery1->Prepared=true; ADOQuery1->Open(); ADOQuery1->ExecSQL(); }請參考! ---------------------------------------------- We will either find a way, or make one. -Hannibal -。 發表人 - stallion 於 2005/08/08 23:45:00 |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
插花:
void __fastcall TForm1::Edit1Enter(TObject *Sender) { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); if(Edit1->Text=="")return; int Id=Edit1->Text.ToInt(); ADOQuery1->SQL->Add("Select * from product"); ADOQuery1->SQL->Add("Where P_ID=:ID"); ADOQuery1->Parameters("Id")->AsInteger=Edit1->Text.ToInt(); //若不行,将上句改为: //ADOQuery1->Parameters("Id")->DataType=FtString; //ADOQuery1->Parameters("Id")->Value=Edit1->Text; ADOQuery1->Prepared=true; ADOQuery1->Open();============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
if(Edit1->Text=="")return;
ADOQuery1->SQL->Add("Select * from product Where P_ID=:ID");
ADOQuery1->Parameters->ParamByName("ID")->Value=Edit1->Text;
ADOQuery1->Prepared=true;
ADOQuery1->Open();
ADOQuery1->ExecSQL();
} deity,很抱歉~~還是有錯誤
上以是我的程式,沒有bug
但是我輸入與P_ID相等的值按enter後
在DBGrid不會顯示出表單的欄位
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
您好:要想
我輸入與P_ID相等的值按enter後
在DBGrid不會顯示出表單的欄位
您将代码写至Edit1的OnKeyDown事件中即可。
{ if (key==13) { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); if(Edit1->Text=="")return; ADOQuery1->SQL->Add("Select * from product Where P_ID=:ID"); ADOQuery1->Parameters->ParamByName("ID")->Value=Edit1->Text; ADOQuery1->Prepared=true; ADOQuery1->Open();这样按enter就会触发上面事件。另您的DBGrid.DataSource1.DataSet应指向ADOQuery1 ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
您好:上面已经说得很明白了您将代码写至Edit1的OnKeyDown事件而非OnEnter(获得焦点触发,而非按Enter触发)事件中即可。
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (key==13) //key=13,也即enter键。按下enter键执行下列语句 { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); if(Edit1->Text=="")return; ADOQuery1->SQL->Add("Select * from product Where P_ID=:ID"); ADOQuery1->Parameters->ParamByName("ID")->Value=Edit1->Text; ADOQuery1->Prepared=true; ADOQuery1->Open(); } } 试试看 >> <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > |
crazykai
一般會員 發表:8 回覆:6 積分:2 註冊:2005-03-14 發送簡訊給我 |
jace妳好: 我的做法如下
void __fastcall TForm1::Edit1KeyDown(TObject *Sender) { int a =testEdit->Text.Length(); if(a==5) //假設你的P_ID的長度是5 { ADOQuery1->Active=false; ADOQuery1->SQL->Clear(); String sql; sql="select * from product where P_ID=" Edit1->Text; ADOQuery1->SQL->Add(sql); ADOQuery1->Active=true; }提供你做參考嚕 發表人 - |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
deity 你好,
我已經將程式寫在Edit1的OnKeyDown事件
{
if (key==13)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
if(Edit1->Text=="")return;
ADOQuery1->SQL->Add("Select * from product Where P_ID=:ID");
ADOQuery1->Parameters->ParamByName("ID")->Value=Edit1->Text;
ADOQuery1->Prepared=true;
ADOQuery1->Open();
}
} 但是會出現錯誤:undefined symbol "key"
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: 我已經將程式寫在Edit1的OnKeyDown事件{ //if (key==13)改为: if (Key==13) //K为大写的k,用惯了delphi,没注意到大小写您试试看,小弟试了没问题 { >>>>>>>>>>>>>> 但是會出現錯誤:>>< face="Verdana, Arial, Helvetica"> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ 發表人 - deity 於 2005/08/12 17:01:36 |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |