請問如何取得DBGrid資料並修改後Refresh |
尚未結案
|
kjwang
一般會員 發表:11 回覆:8 積分:3 註冊:2005-04-17 發送簡訊給我 |
我想要的做法是: 主Form上面有一個DBGrid將Query的資料show出來後
DBGrid是設定成Read Only不允許user修改的...
然後user在點選DBGrid上某筆資料時,會show出副Form顯示該筆資料的所有欄位
其中只有某一欄位能夠以Edit欄位來編輯,其餘欄位均是顯示資料無法修改狀態
修改完該欄位後確認關閉副From回到主Form的同時 主Form的DBGrid內資料也Refresh成新的 不知這樣該如何做呢? 我現在的問題是卡在不知如何將主Form資料傳遞至副Form
我用DBGrid.Fields[x].Asstring := TForm2.DBEdit.Text;
會顯示無法對一個ready-only的dataset做編輯動作...
謝謝哦!!
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 以下步驟請注意﹕
一﹒如果是使用Query元件來擷取資料﹐需要將其RequestLive屬性值設為True﹐否則無法對擷取到的資料進行異動﹒
二﹒在副Form中可以User 主Form﹐然后調用主Form的Query,雙擊Query﹐利用其欄位控制器在副Form中加入對應的資料感知元件﹐再在主Form中DBGrid元件的OnDblClick事件(Mouse雙擊)事件中﹐先判斷目前點擊的是否為空值﹐如果不是的話﹐即可開啟副Form﹐而副Form上的資料感知元件皆連接主Form中的DataSource元件(上游為連接資料庫的Query元件)﹐以下是小弟在某專案中的一段節錄﹐差不多的功能﹐供您參考﹕
主Form中DBGrid元件的OnDblClick事件 //TsalaryByDaysDetsail2Form為副Form procedure TSalaryByDaysForm.suiDBGrid2DblClick(Sender: TObject); begin if Not (ADOQuery2.FieldByName('IDNO').IsNull) then begin Try SalaryByDaysDetail2Form := TSalaryByDaysDetail2Form.Create(Application); SalaryByDaysDetail2Form.ShowModal; Finally SalaryByDaysDetail2Form.Free; end; end else begin suiMessageDialog1.ButtonCount := 1; suiMessageDialog1.IconType := suiStop; suiMessageDialog1.Text := 'No Data for modify!'; suiMessageDialog1.ShowModal; end; end;注﹕以上範例程式中有使用第三元件 ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
kjwang
一般會員 發表:11 回覆:8 積分:3 註冊:2005-04-17 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 其實處理的方法有很多﹐見仁見智吧﹒ 如果在副Form中不引用主Form中的Query元件﹐也是可行﹐可在副Form中新增一個Query﹐然后當主Form中DBGrid在触發OnDblClick事件中﹐擷取到該筆資料的鍵值欄位值﹐然后再用副Form中的Query針對這個鍵值欄位值做一個類似Locate方法的Focus(焦點)移動動作﹐讓資料錄指針指向該筆資料錄﹐問題就是當該筆資料錄有異動產生時﹐主Form中的Query不能及時回傳最新的資料狀態﹐所以還需要使用Close&Open的方法重新擷取到最新的資料錄﹐再用類似Locate方法的Focus(焦點)移動動作﹐讓主Form中DBGrid元件的資料錄指針指向該筆資料﹒ 各種不同的作法有利有弊﹐關鍵在于何種方法對目前需求可以達到最有效率的處理﹐這也是一種經驗的累積﹐再試試看其它的方法﹐或許您能找到更有效率的處理方法﹒ =================================
有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗
================================
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |