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

ComboBox1儲存到資料庫的問題~

尚未結案
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-03 09:52:58 IP:210.71.xxx.xxx 未訂閱
我建立一個資料庫,欄位只有
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-03 09:57:51 IP:210.65.xxx.xxx 未訂閱
Hi inera001,    為何不直接使用 DBComboBox(in Data Controls TAB)?    設定其 DataSource 與 DataField 即可     發表人 -
------
Fishman
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-03 10:00:36 IP:202.62.xxx.xxx 未訂閱
您好﹗    Table1.FieldByName('Q1').Value := ComboBox1.Text;    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-03 10:11:51 IP:210.71.xxx.xxx 未訂閱
不..我的意思是說,ComboBox1裡有1~5選項,當我選到3時,它會將3的結果丟到資料庫裡~~DBComboBox不是讀取資料庫的東西嗎~~如果是用那個做,請問該如何寫程式咧=.= 我是初學者,所以幫幫忙了~~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-03 10:20:17 IP:202.62.xxx.xxx 未訂閱
您好﹗    Table1.FieldByName('Q1').Value := ComboBox1.Text; //這樣不行嗎﹖ 若使用DBComboBox﹐則不需要如上述的程式碼﹐在設計時期指定DataSource屬性值為DataSource1﹐DataField屬性值為Q1﹐然后在執行過程中在ComboBox中選擇后﹐直接Post即可﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-03 10:46:37 IP:210.71.xxx.xxx 未訂閱
非常的感謝!第一個問題解答了~~我可以繼續問嗎~~~ 因為傳回去的欄位不只一個,所以
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-03 12:36:06 IP:202.62.xxx.xxx 未訂閱
您好﹗    單獨的新增作業﹐只需結合Table的Insert和Post方法即可﹐無論您使用多少個DBComboBox元件﹐只要正常設定其DataSource屬性和DataField屬性﹐即正常透過DataSource元件連接上游的資料集元件Table﹐就可正常工作﹐如下﹕ 若使用DBNavigator元件﹐可直接使用其提供的Insert按鈕(+形狀)和Post按鈕(打勾形狀)即可﹐若沒有使用DBNavigator元件﹐可在Form中加入兩個Button元件﹐在其OnClick事件中分別寫入新增和存入的程式碼﹐程式碼部分如下﹕
begin
  Table1.Insert;
end;
//作用為使Table資料集元件進入新增狀態﹐此時即可操控各個欄位相對應的DBComboBox的值﹒    begin
  Table1.Post;
end;
//作用是將剛才Insert后的異動狀態存入到資料庫中
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-06 21:47:57 IP:210.71.xxx.xxx 未訂閱
你好,謝謝板主的回答!解決我不少問題!不過我還有問題!可能要一直麻煩你了! 我建立一個 >
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-07 09:13:07 IP:202.62.xxx.xxx 未訂閱
您好!    這樣試試看, 在ComboBox的OnChange事件中寫入如下程式碼:
begin
  if Not (Table.State In [dsEdit, dsInsert]) then
    Table1.Locate('課程代號', ComboBox1.Text, [loCaseInsensitive]);
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-07 11:33:43 IP:218.165.xxx.xxx 未訂閱
嗚嗚~解決了~太高興了,看到程式碼,老師沒有教到那,不過還是感謝大大解決我的問題!呵呵!不過問題還是存在低!就我發問的第三篇問題。我將DBComboBox改回去ComoBox,Insert和Post沒問題,不過我希望當我每做一次,他會填到下一列,不會永遠顯示在第一列。我是利用AppendRecord,所以我的程式碼是: Table3.AppendRecord([ComboBox1.Text,ComboBox2.Text,...]); 但是它會出現錯誤。就再我要將值傳會去時,錯誤如下: Project Prject1.exe raised exception class EDatabaseError with message 'Table3:Dataset not in edit or insert mode'.Process stopped. Use Step or Run to continue. 不過我不知道為什麼,是因為檔案變唯讀嗎?可是我不知道為什麼,就算我照個大大的程式寫,他最後還是變成唯讀,一開啟,他會說這文件被文件編輯者鎖訂了,我明明就沒設><
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-07 15:07:12 IP:202.62.xxx.xxx 未訂閱
您好!    您可參考一下出現的錯誤信息(紅色部分): Project Prject1.exe raised exception class EDatabaseError with message 'Table3:Dataset not in edit or insert mode'.Process stopped. Use Step or Run to continue. 因為目前您的資料集元件(Table1)的State屬性未處于dsInsert(新增)或dsEdit(修改)狀態, 所以Post或Cancel方法均無法使用, 而使資料集元件的State屬性進入dsInsert或dsEdit最常用的方法就是通過資料集元件的Insert, Edit方法, 您需要在Post按鍵被按下之前, 确定資料集元件的State屬性是處于dsInsert或者dsEdit狀態, 通常如果未使用資料感知元件時, 我們的寫法如下: 在Form中加入一個新增按鈕, 一個修改按鈕, 一個存檔按鈕, 一個取消按鈕 分別在各個按鈕的OnClick事件中鍵入如下程式碼:
新增按鈕:
begin
  Table1.Insert; //Table1的State屬性進入dsInsert狀態
end;    修改按鈕:
begin
  Table1.Edit; //Table1的State屬性進入dsEdit狀態
end;    存檔按鈕:
begin
  Table1.FieldByName('Q1').AsString := ComboBox1.Text;
  Table1.FieldByName('Q2').AsString := ComboBox2.Text;
  Table1.FieldByName('Q3').AsString := ComboBox3.Text;
  Table1.Post; //Post存檔方法完成后, 資料集元件的State屬性即回到dsBrowse狀態
end;    取消按鈕:
begin
  Table1.Cancel; //取消方法完成后, 資料集元件的State屬性即回到dsBrowse狀態
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/01/07 15:09:55
------
忻晟
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-01-07 22:55:13 IP:218.165.xxx.xxx 未訂閱
不!要將資料放到裡面去沒問題!問題是!我希望能夠當A1同學做完問卷,他的資料會放到第一列!A2同學做完問卷會放到第二列,一次類推!因為要做加總和平均,所以必須用到AppendRecord,不過會出現我上面說的錯誤!我試著將大大的程式寫進去,還是一樣! 以下是我的程式!我只建立一個Bottom,叫做傳回,這是要傳到資料庫低! Table3.Open; Table3.Insert; Table3.Edit; Table3.AppendRecord([ComboBox1.Text,ComboBox2.Text,ComboBox3.Text]); Table3.Post; Table3.Cancel; 希望大大能夠不厭其煩的回答我!謝謝!
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-01-07 23:20:54 IP:218.165.xxx.xxx 未訂閱
呵呵!在我提出問題後,繼續去試,結果問題莫名其妙解決了!我好高興唷! 接下來暫時沒問題了!如果有問題我在請教大大!非常非常的感謝!不知道要怎麼報答你^^
系統時間:2024-05-19 10:38:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!