使用DBGRID录入资料的问题 |
答題得分者是:Jasonwong
|
bayman
一般會員 發表:30 回覆:35 積分:18 註冊:2007-04-24 發送簡訊給我 |
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
bayman
一般會員 發表:30 回覆:35 積分:18 註冊:2007-04-24 發送簡訊給我 |
|
qqufo
一般會員 發表:0 回覆:4 積分:5 註冊:2004-11-02 發送簡訊給我 |
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
bayman
一般會員 發表:30 回覆:35 積分:18 註冊:2007-04-24 發送簡訊給我 |
|
bayman
一般會員 發表:30 回覆:35 積分:18 註冊:2007-04-24 發送簡訊給我 |
謝謝版主大大的囬復,是的 AUTOEDIT沒起作用,我每次按下箭頭到下一筆記錄再修改就會出現dataset not in edit or insert錯誤。因此,edit指令下在DBGrid.OnEnter 中也不能解決問題
補充說明一下,adoquery使用ltBatchOptimistic模式,autoedit已設為true,實際上使用的不是dbgrid而是dbgrideh,謝謝! ===================引 用 Jasonwong 文 章=================== 請問一下, 你為什麼要在 AfterScroll 中下 Edit 指令, 難道 DataSource 的 AutoEdit 沒作用嗎 ? Edit 指令能不能下在 DBGrid.OnEnter 中呢 |
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
bayman
一般會員 發表:30 回覆:35 積分:18 註冊:2007-04-24 發送簡訊給我 |
程式碼很簡單修改按鈕:adoquery1.edit,然后就是相應的dbgrideh1.Columns[i].ReadOnly := false;
object DBGridEh1: TDBGridEh Left = 0 Top = 58 Width = 800 Height = 327 Align = alClient AllowedOperations = [alopInsertEh, alopUpdateEh, alopAppendEh] DataSource = datasource1 Flat = False FooterColor = clWindow FooterFont.Charset = DEFAULT_CHARSET FooterFont.Color = clWindowText FooterFont.Height = -11 FooterFont.Name = 'Tahoma' FooterFont.Style = [] FrozenCols = 1 Options = [dgEditing, dgAlwaysShowEditor, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit, dgMultiSelect] OptionsEh = [dghFixed3D, dghHighlightFocus, dghClearSelection, dghEnterAsTab] RowHeight = 26 RowSizingAllowed = True TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] UseMultiTitle = True Columns = < item EditButtons = <> FieldName = 'clientno' Footers = <> ReadOnly = True Width = 61 end item EditButtons = <> FieldName = 'clientname' Footers = <> ReadOnly = True Width = 131 end 。。。。。。 end object adoquery1: TADOQuery LockType = ltBatchOptimistic AfterScroll = adoquery1AfterScroll Parameters = <> SQL.Strings = ( '') Left = 12 Top = 177 object adoquery1clientno: TStringField DisplayLabel = #3545#5677 FieldName = 'clientno' FixedChar = True Size = 15 end ......... object datasouce1: TDataSource DataSet = adoquery1 Left = 41 Top = 178 end 謝謝! ===================引 用 Jasonwong 文 章=================== 看來要請你公佈你的程式碼了, 因為我實地拉了一個 ADOQuery 跟一個 DBGrid 做了一個簡單的測試, 並沒有發你所講的錯誤 |
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
我想你的問題應該出在你有某些欄位的 ReadOnly = True
試著把 ReadOnly 都改成 False 試試吧 ===================引 用 bayman 文 章=================== 謝謝版主大大的囬復,是的 AUTOEDIT沒起作用,我每次按下箭頭到下一筆記錄再修改就會出現dataset not in edit or insert錯誤。因此,edit指令下在DBGrid.OnEnter 中也不能解決問題 補充說明一下,adoquery使用ltBatchOptimistic模式,autoedit已設為true,實際上使用的不是dbgrid而是dbgrideh,謝謝!
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心 |
bayman
一般會員 發表:30 回覆:35 積分:18 註冊:2007-04-24 發送簡訊給我 |
謝謝大大的解答,這樣的確沒問題了,謝謝!
希望大大再解答我一個小問題,在DBGRID輸入數據保存后,髮現最后一個修改過的記錄總是不能保存,即使保存時首先adoquery1.post也不行,謝謝! ===================引 用 Jasonwong 文 章=================== 我想你的問題應該出在你有某些欄位的 ReadOnly = True 試著把 ReadOnly 都改成 False 試試吧 ===================引 用 bayman 文 章=================== 謝謝版主大大的囬復,是的 AUTOEDIT沒起作用,我每次按下箭頭到下一筆記錄再修改就會出現dataset not in edit or insert錯誤。因此,edit指令下在DBGrid.OnEnter 中也不能解決問題 補充說明一下,adoquery使用ltBatchOptimistic模式,autoedit已設為true,實際上使用的不是dbgrid而是dbgrideh,謝謝! |
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
這個要看你程式是怎麼寫的, 這個我沒辦法憑想像去回答你, 最好是有程式碼
===================引 用 bayman 文 章=================== 謝謝大大的解答,這樣的確沒問題了,謝謝! 希望大大再解答我一個小問題,在DBGRID輸入數據保存后,髮現最后一個修改過的記錄總是不能保存,即使保存時首先adoquery1.post也不行,謝謝!
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心 |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |