線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1378
推到 Plurk!
推到 Facebook!

另外一個新增的問題

尚未結案
iva0629
一般會員


發表:28
回覆:14
積分:8
註冊:2003-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-29 00:18:15 IP:61.217.xxx.xxx 未訂閱
前一個新增的問題解決了 可是又出現了這個問題 怎麼按鈕裡面一開始就寫了  Table2.Insert; 可是還會出現↓這個訊息框哩???    不懂???     我的程式碼 Table2.Insert; Table2['Sub_ID']:=DBText4.Caption; Table2Year.Value:=StrToInt(Edit1.text); Table2SS.Value:=StrToInt(Edit2.text); table2.Post; table2.Close; table2.Open; ShowMessage('已加入此課程'); Edit1.Clear; Edit2.Clear; ps.我的Year 和 SS 的欄位型態是整數 另外一個問題 選擇同科系的 在Table1寫入 Accept:=ComboBox2.Text=Table2Major.asstring; 按鈕 Table1.Filtered:=TRUE; 資料呈現在DBGrid2 對應Table2 選擇同年度的 在Table2寫入 Accept:=ComboBox1.Text=Table2Year.asstring; 按鈕 Table2.Filtered:=TRUE; 資料呈現在DBGrid1 對應Table1 這樣不是能出現ComboBox所選擇的資料嗎 可是阿 我選了科系後 再選年度 或者是先選擇年度 在選科系 然後再回去選擇年度 而呈現年度的DBGrid2就會有些欄位會無法顯示出來耶 怎麼辦哩 煩惱中.... ↓
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-29 00:33:21 IP:61.217.xxx.xxx 未訂閱
引言:前一個新增的問題解決了 可是又出現了這個問題 怎麼按鈕裡面一開始就寫了 Table2.Insert; 可是還會出現↓這個訊息框哩??? 不懂???
Tabel2.Insert;之前table2是"關閉"??? 發表人 - leo2568 於 2003/11/29 00:45:28 發表人 - leo2568 於 2003/11/29 00:48:22
iva0629
一般會員


發表:28
回覆:14
積分:8
註冊:2003-08-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-29 00:42:32 IP:61.217.xxx.xxx 未訂閱
CachedUpdate:=False; 這個是啥意思阿   我有去改成
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-29 01:03:30 IP:61.217.xxx.xxx 未訂閱
引言:這樣不是能出現ComboBox所選擇的資料嗎可是阿 我選了科系後 再選年度或者是先選擇年度 在選科系 然後再回去選擇年度而呈現年度的DBGrid2就會有些欄位會無法顯示出來耶怎麼辦哩 煩惱中....
你可以把程式碼po到會員程式檔案求助區,也許有人能幫你解答 發表人 -
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-29 01:19:41 IP:63.84.xxx.xxx 未訂閱
您好!    CachedUpdate屬性值的作用是決定是否開啟批次Update異動資料的功能. 應該和您的問題沒有關系.    請將您的程式碼改為如下試試:
begin
  Table2.Open;  
  Table2.Insert;
  Table2['Sub_ID'] := DBText4.Caption;
  Table2Year.Value := StrToInt(Edit1.text);
  Table2SS.Value := StrToInt(Edit2.text);
  Table2.Post;
  Table2.Close;
  Table2.Open;
  ShowMessage('已加入此課程');
  Edit1.Clear;
  Edit2.Clear;
end;
此外, 建議您盡量不要使用Value的方法來寫諸如此類的程式碼, 既然已經知道了欄位的形態, 就可以直接以形態指定提高效率, 如下:
begin
  Table2.Open;  
  Table2.Insert;
  Table2.FieldByName('Sub_ID').AsString := DBText4.Caption;
  Table2.FieldByName('Year').AsInteger := StrToInt(Edit1.text);
  Table2.FieldByName('SS').AsInteger := StrToInt(Edit2.text);
  Table2.Post;
  Table2.Close;
  Table2.Open;
  ShowMessage('已加入此課程');
  Edit1.Clear;
  Edit2.Clear;
end;
參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
iva0629
一般會員


發表:28
回覆:14
積分:8
註冊:2003-08-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-29 01:55:41 IP:61.217.xxx.xxx 未訂閱
嗯嗯 我已經加入了 Table2.Open; 也照cashxin2002 版主的意見改 DBText和Edit的傳回了 可是還是一樣說 怎麼辦~~~~
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-29 02:03:09 IP:61.217.xxx.xxx 未訂閱
引言: -------------------------------------------------------------------------------- 這樣不是能出現ComboBox所選擇的資料嗎可是阿 我選了科系後 再選年度或者是先選擇年度 在選科系 然後再回去選擇年度而呈現年度的DBGrid2就會有些欄位會無法顯示出來耶怎麼辦哩 煩惱中.... -------------------------------------------------------------------------------- 我已經加入了 Table2.Open; 也照cashxin2002 版主的意見改 DBText和Edit的傳回了 可是還是一樣說 怎麼辦~~~~
程式異常原因不只如此,你可以把程式碼po到會員程式檔案求助區,也許有人能幫你解答 -- http://delphi.ktop.com.tw/loadfile.php?TOPICID=12921592&CC=288988 發表人 - leo2568 於 2003/11/29 02:25:09 發表人 - leo2568 於 2003/11/29 09:36:52
cashxin2002
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-29 02:09:19 IP:63.84.xxx.xxx 未訂閱
您好!    請問出錯信息還是跟之前貼出的一樣嗎?    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
cashxin2002
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-29 02:28:18 IP:63.84.xxx.xxx 未訂閱
您好!    另外一個問題 選擇同科系的 在Table1寫入 Accept:=ComboBox2.Text=Table2Major.asstring; 按鈕 Table1.Filtered:=TRUE; 資料呈現在DBGrid2 對應Table2 選擇同年度的 在Table2寫入 Accept:=ComboBox1.Text=Table2Year.asstring; 按鈕 Table2.Filtered:=TRUE; 資料呈現在DBGrid1 對應Table1 這樣不是能出現ComboBox所選擇的資料嗎 可是阿 我選了科系後 再選年度 或者是先選擇年度 在選科系 然後再回去選擇年度 而呈現年度的DBGrid2就會有些欄位會無法顯示出來耶 怎麼辦哩 煩惱中.... 利用Filter屬性配合OnFilterRecord事件來處理過濾資料的事務, 您所說的現象是否是此過濾方法的Bug還是雙重過濾所引起的現象, 暫且不論, 但此方法涉及到效率不佳的問題, 至于您所說的怎么辦哩, 小弟覺得選用Query元件會有效率得多, 範例如下:
單條件查詢:
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('Select * From 資料表名 Where Major=''' ComboBox2.Text '''');
  Query1.Open;
end;    雙條件查詢:
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('Select * From 資料表名 Where Major=''' ComboBox2.Text ''' and Year=''' ComboBox1.Text '''');
  Query1.Open;
end;
參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
iva0629
一般會員


發表:28
回覆:14
積分:8
註冊:2003-08-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-29 03:27:23 IP:61.217.xxx.xxx 未訂閱
引言: 您好! 請問出錯信息還是跟之前貼出的一樣嗎? ===================== 努力,相信會獲得美麗! 忻晟
沒錯 還是出現一樣的訊息框 關於Query 您能說清楚一點嗎? 不怎麼會用說…
cashxin2002
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-11-29 09:19:43 IP:63.84.xxx.xxx 未訂閱
您好﹗    錯誤出現的原因是當前資料集元件Table2還未處于dsInsert(新增)或dsEdit(修改)狀態﹐當此時﹐執行Post方法時不能有效的將資料存入資料庫﹐所以就會出現這樣的錯誤﹐從這方面去查一下吧﹒    Query元件的使用其實和Table很相似﹐其區別是Query除了可使用通用的DataSet各種方法之外(如Open, Close, Edit, Post等等)﹐其對資料表內容的擷選是利用SQL屬性中的SQL語句來指定的﹐而Table指定資料庫是設定TableName屬性值﹒    比如說Table元件要連接[資料表1]﹐只需要設定其DatabaseName屬性值和TableName屬性設定為資料表1﹐而后將Activate設為True或Table.Open的方法即可擷取到資料﹒ 而Query元件要連接[資料表1]的方法﹐是需要設定其DatabaseName屬性值(此步驟同Table部分)﹐再在SQL屬性中輸入查詢語句: Select * From 資料表1﹐而后將Activate屬性設為True或者Query.Open的方法即可擷取到資料﹒    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-11-29 13:09:46 IP:61.217.xxx.xxx 未訂閱
修正 table2 新增記錄問題: 方法:table2.InsertRecord([dbedit3.Text,null,null,dbedit4.text]);    This statement appends a record to the Customer dataset.<> class="code"> Customer.InsertRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, iscountEdit.Text]); 你的程式結構使用Table2.Insert;的程式碼不太可行,請改以下方式新增記錄:
 Table2.InsertRecord([dbtext4.Caption,null,null,null]);
 ......
 Table2.Post;
你的table2 dataset是 Master/Detail型態,所以有不同作法.... 你懂我的明白嗎? 發表人 - leo2568 於 2003/11/29 18:36:04
系統時間:2024-06-28 14:02:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!