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

請問一個有關combobox取資料庫值的問題

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


發表:5
回覆:9
積分:2
註冊:2007-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-02-19 22:02:46 IP:220.131.xxx.xxx 訂閱
大人是這樣的:

我有一個table1 有兩個欄位 欄位一是物品編號,欄位二是物品群組
其中物品編號第三碼至第四碼 02代表電腦用品 05代表雜項物品


欄位一 欄位二
(物品編號) (物品群組)
- - - - - - - - - -- - -
abb02*** 電腦用品
abb02*** 電腦用品
abb02*** 電腦用品
abb05*** 雜項物品
abb05*** 雜項物品


而我現在想用query 來表欄位資料放入combobox裡的item

如下,
02 | 辦公室用品
05 | 雜項物品
當點擊以上的item後,item的前兩碼就會傳到 傳到edit.text中 請問各位大大有辦法嗎????

http://delphi.ktop.com.tw/board.php?cid=30&fid=100&tid=55130


我已用這樣的方式把item加入,但是 sql語句我總是調不出來我要的
感激不盡
編輯記錄
jokesmile 重新編輯於 2008-02-19 22:04:27, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-02-20 06:47:29 IP:220.141.xxx.xxx 訂閱
  1. http://delphi.ktop.com.tw/board.php?cid=30&fid=100&tid=55130 前案未結案,請先結案,以便釐清案情。
  2. 可否請您將現行程式碼貼出,或將模擬程式上傳以供參考。
  3. 選comobox傳至edit如下:
    procedure TForm1.ComboBox1Change(Sender: TObject);
    var s : string;
    begin
    s :=ComboBox1.Items[ComboBox1.itemindex];
    edit1.Text := copy(s,0,2)
    end;
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-02-20 06:55:59, 註解 無‧
jokesmile
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-02-20 07:29:44 IP:220.131.xxx.xxx 訂閱
可是那個人不是我阿 

procedure TForm1.ComboBox1Change(Sender: TObject);

begin
Query1.Close;
Query1.DisableControls;
ComboBox1.Clear;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT DISTINCT 物品名稱,物品編號 FROM table1 like ' '''' edit2.text '''' '%');
Query1.Open;
while not Query1.Eof do
begin
ComboBox1.Items.Add(Query1.FieldByName('ID').AsString);
Query1.Next;
end;
ComboBox1.ItemIndex := 0;
Query1.Close;
Query1.EnableControls;
end;
編輯記錄
jokesmile 重新編輯於 2008-02-20 07:31:12, 註解 無‧
jokesmile 重新編輯於 2008-02-20 07:32:46, 註解 無‧
shunaaron
高階會員


發表:13
回覆:94
積分:106
註冊:2006-10-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-02-20 09:18:06 IP:60.250.xxx.xxx 訂閱
設一人個私域變數
ttStr: TStringList;

加入ComboBox時

ttStr := TStringList.Create;
之後
ComboBox -->加入名稱
ttStr.item.add(加入編號)

最後
Edit1.Text := Copy(ttStr.String[ComboBox.itemIndex],1,2)
------
程式沒有這麼難
只是還沒打通其中要絕
jokesmile
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-02-20 11:14:49 IP:203.73.xxx.xxx 訂閱
大人 我不是很了解
因為 其實最主要的是

combobox裡列出不同的物品群組,再由隔壁的字串點及此物品代表的編號 裡面的02就是電腦用品 05就是雜項物品
abb02*** 電腦用品
abb02*** 電腦用品
abb02*** 電腦用品
abb05*** 雜項物品
abb05*** 雜項物品


我就是希望 點選電腦用品時,edit2.text 便會出現得到此項物品的代表編號
但是若我用這個 select 子句的話
'SELECT DISTINCT 物品名稱,物品編號 FROM table1 like ' '''' edit2.text '''' '%'
把結果加入combobox裡,combobox出現結果會變成
02|電腦用品
02|電腦用品
02|電腦用品
05|雜項物品
05|雜項物品


但我想要的結果是:

02 | 辦公室用品
05 | 雜項物品
當點擊以上的item後,item的前兩碼就會傳到 傳到edit.text中 請問各位大大有辦法嗎????


st33chen
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-02-20 12:14:57 IP:122.116.xxx.xxx 未訂閱
步驟1. 產生combobox裡的item 
oracle : select distinct substr(物品編號,4,2) || '|' || 物品群組 as itemname from table1
access : select distinct substr(物品編號,4,2) & '|' & 物品群組 as itemname from table1
然後把值一一放入 combobox 中.

步驟2. 點選 combobox 的 item 把前兩碼放入 edit1
combobox 的 onclick 事件 中寫入
edit1.text := copy(combobox1.Items[combobox1.itemindex],1,2);

不知是否為您所想要的, 謝謝
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-02-20 15:01:59 IP:122.127.xxx.xxx 訂閱
抱歉,誤會您了.
不知是否是您要的,如果能更了解您的意思就好了。



'SELECT DISTINCT 物品名稱,物品編號 FROM table1 where 物品編號 like ' '"' edit2.text '%' '"'
);
AdoQuery1.Open;
while not AdoQuery1.Eof do
begin
//
// edit1 依 combobox選取 顯示 05
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
edit1.Text := copy(combobox1.Items[combobox1.itemindex],1,2);
end;


// 您的問題是 輸入 abb02 or abb05 (您用Like)
procedure TForm1.FormCreate(Sender: TObject);
begin
edit2.Text := 'abb0';
end;

附一個Demo給你
http://delphi.ktop.com.tw/download.php?download=upload/47bbd589545a0_test.zip

------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-02-20 15:05:45, 註解 無‧
pceyes 重新編輯於 2008-02-20 15:25:28, 註解 加附件‧
weimingyu
一般會員


發表:0
回覆:7
積分:6
註冊:2004-10-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-02-20 17:51:30 IP:220.130.xxx.xxx 訂閱
小弟比較笨 想法比簡單
希望大哥們多多指教
目前看到很多大哥的寫法 應該都是使用者要的 而使用者為什麼還會有問題小弟就在想就在想會不會沒有搞清楚使用者真的想要什麼
而改一個程式時小弟會先了解到發問者到底想要什麼功能才會動手去修改程式

看題目來說使用者想要說的是 當選擇COMBOBOX的內容時要 將代碼 帶到EDIT內
而TABLE 只有二個欄位要這麼做

如果是常態要用的欄位為什麼不直接 建一個新的就好了 ..要讓程式每次都去抓呢
所以小弟做法會是
產品名稱 物品群組 群組代碼
abb02*** 電腦用品 02
abb02*** 電腦用品 02
abb02*** 電腦用品 02
abb05*** 雜項物品 05
abb05*** 雜項物品 05

一開就先將資料全都抓到COMBOBOX內
ADOQuery1.Close;
ADOQuery1.SQL.Text:='Select 群組代碼,物品群組 From 產品資料 WHERE 群組代碼 IS NOT NULL GROUP BY 群組代碼 ORDER BY 群組代碼 ASC';
ADOQuery1.Open;
while Not ADOQuery1.Eof do
begin
ComboBox11.Items.Add(ADOQuery1.FieldByName('群組代碼').AsString ':' ADOQuery1.FieldByName('群組名稱').AsString);
ADOQuery1.Next;
end;

這樣你的資料只會有
02:電腦用品
05:雜項物品

在來
當你在改變COMBOBOX時
IF COMBOBOX.TEXT='02:電腦用品' THEN EDIT.TEXT='02'
IF COMBOBOX.TEXT='05:雜項物品' THEN EDIT.TEXT='05'

以上是小弟的一些想法 還請大哥們多多指教..^^






jokesmile
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-02-20 21:46:28 IP:218.170.xxx.xxx 訂閱
st33chen大人



編輯記錄
jokesmile 重新編輯於 2008-02-20 21:48:46, 註解 無‧
jokesmile 重新編輯於 2008-02-20 22:08:15, 註解 無‧
jokesmile 重新編輯於 2008-02-20 22:10:14, 註解 無‧
jokesmile 重新編輯於 2008-02-20 22:12:41, 註解 無‧
忘了
一般會員


發表:0
回覆:2
積分:0
註冊:2008-02-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-02-21 15:22:16 IP:59.124.xxx.xxx 訂閱
Query1.SQL.Add('SELECT DISTINCT 物品名稱,SUBSGTRING(物品編號,4,2) 物品編號 FROM table1 like ' '''' edit2.text '''' '%');
系統時間:2024-12-04 16:21:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!