ComboBox1儲存到資料庫的問題~ |
尚未結案
|
inera001
一般會員 ![]() ![]() 發表:5 回覆:14 積分:3 註冊:2004-12-07 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
inera001
一般會員 ![]() ![]() 發表:5 回覆:14 積分:3 註冊:2004-12-07 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ Table1.FieldByName('Q1').Value := ComboBox1.Text;
//這樣不行嗎﹖ 若使用DBComboBox﹐則不需要如上述的程式碼﹐在設計時期指定DataSource屬性值為DataSource1﹐DataField屬性值為Q1﹐然后在執行過程中在ComboBox中選擇后﹐直接Post即可﹒ =================================
------
忻晟 |
inera001
一般會員 ![]() ![]() 發表:5 回覆:14 積分:3 註冊:2004-12-07 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 單獨的新增作業﹐只需結合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 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! 這樣試試看, 在ComboBox的OnChange事件中寫入如下程式碼:
begin if Not (Table.State In [dsEdit, dsInsert]) then Table1.Locate('課程代號', ComboBox1.Text, [loCaseInsensitive]); end;=================================
------
忻晟 |
inera001
一般會員 ![]() ![]() 發表:5 回覆:14 積分:3 註冊:2004-12-07 發送簡訊給我 |
嗚嗚~解決了~太高興了,看到程式碼,老師沒有教到那,不過還是感謝大大解決我的問題!呵呵!不過問題還是存在低!就我發問的第三篇問題。我將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 發送簡訊給我 |
您好! 您可參考一下出現的錯誤信息(紅色部分):
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;=================================
------
忻晟 |
inera001
一般會員 ![]() ![]() 發表:5 回覆:14 積分:3 註冊:2004-12-07 發送簡訊給我 |
不!要將資料放到裡面去沒問題!問題是!我希望能夠當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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |