全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1888
推到 Plurk!
推到 Facebook!

如何使用COMBOBOX元件

 
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-06 09:18:08 IP:61.66.xxx.xxx 訂閱

我想在人事資料庫中查詢部門顯示到COMBOBOX1中。然後選擇部門顯示到EDIT內。點查詢就可以查詢部門的人員資料了。我不知道該如何寫。請幫幫忙。附代碼>圖片

procedure TForm1.FormCreate(Sender: TObject);
begin
DB1.Params.Add('SERVER NAME=MIS-02');
DB1.Params.Add('DATABASE NAME=pis2005');
DB1.Params.Add('USER NAME=sa');
DB1.DatabaseName:='MSQL';
DB1.LoginPrompt:=false;
DB1.Connected:=TRUE;
Query1.DatabaseName:='MSQL';
Query1.RequestLive:=False;
DBGrid1.ReadOnly:=true;
edit3.Text:=combobox1.Text;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var sql1:string;
begin
query1.SQL.Clear;
query1.SQL.Add('select emp_no,emp_name,depotment,sex,duty,degree,in_date,native');
query1.SQL.Add('from employee');
query1.SQL.Add('where out_date is null');
query1.SQL.Add('and emp_no like :emp_no and emp_name like :emp_name and depotment like :depotment');
query1.ParamByName('emp_no').AsString:='%' edit1.Text '%';
query1.ParamByName('emp_name').AsString:='%' edit2.Text '%';
query1.ParamByName('depotment').AsString:='%' edit3.Text '%';
query1.Prepare;
query1.Open;
showmessage('共找到' inttostr(query1.RecordCount) '筆資料');
Form1.StatusBar1.Panels[0].Text:='共找到' inttostr(query1.RecordCount) '筆資料';
end;

附加檔案:未命名1.bmp
johnny2212
初階會員


發表:34
回覆:65
積分:39
註冊:2003-04-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-06 17:45:31 IP:61.226.xxx.xxx 未訂閱

(1) Client/Server最大的好處在於要減輕Database的工作量,若是
資料計算都在Database上進行(如Like,Sum,Count....),那何必用
Client/Server呢?直接用MainFrame去寫(如Informix-4GL)不是更方便嗎?
以下是我的方法,您不妨試試看

procedure TForm1.FormCreate(Sender: TObject);
begin
//Query1的Sql DBDEMOS的Employee ---> select * from Employee
Query1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Filter:='LastName =' '''' 'F*' '''' 'or LastName=' '''' 'J*' '''';

// 您的程式應要如此寫
// Query1.Filter:='Emp_No=' '''' Edit1.Text '*' ''''
// ' and Emp_Name=' '''' Edit2.Text '*' '''';..........

Query1.Filtered:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Filtered:=False;
end;

當然它有一些缺點,第一個字母一定要出現(如Young,Yo*可以,ou*則不行),
不過大部分的情況,都可以用定好條件來控制,
但是它的優點太多了,不僅可減少Database的工作量
(加上Like資料量雖小,但資料庫要篩選資料,會慢上許多),
並且在Client端篩選資料,速度不知快了多少倍

(2) 您要將ComboBox的內容轉入到Edit內,我實在不了解為何如此做,
或許您有特殊的原因,我只能說我的做法如下(我當作您已經將部門資料放入資料庫中)
1. 放入Query2,DataSource2, 連結資料庫中的部門資料的Table,
程式執行將Query2.Open
2. 放入DBLookupComboBox1,其中ListSource(注意不是DataSource喔)
連結到Query2的DataSource2
3. DBLookupComboBox1的ListField連結到depotment,KeyField連結到
部門資料的PrimaryKey(若無PrimaryKey,那就連到Depotment)
4. 放入DbText1,連結DataSource2,DbText1的DataField連到Depotment
如此就完成了
5. 若要使用的話,用下列方法
DbText1.Caption或Query2['Depotment'] 或
Query2.FieldByName('Depotment').Value 或
Query2Depotment.Value-->已經將TField取下

(3) 請問您是用什麼方法將螢幕的畫面,用圖片擷取下來的,可以教我嗎?

wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-07 07:56:15 IP:61.66.xxx.xxx 訂閱
我已經搞定了。謝謝。鍵盤上有個print screen sys rq功能鍵按一下就是拮取當前螢幕畫面然後可以粘帖到小畫家或者EXCEL。WORD都可以。
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-07 07:56:20 IP:61.66.xxx.xxx 訂閱
我已經搞定了。謝謝。鍵盤上有個print screen sys rq功能鍵按一下就是拮取當前螢幕畫面然後可以粘帖到小畫家或者EXCEL。WORD都可以。
系統時間:2024-05-17 13:27:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!