Dbgrid 相隔欄位自動輸入(很急T_T") |
尚未結案
|
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
引言: miguel 你好 畫面上的是dbGrid嗎?還是stringGrid,相關的欄位名稱是什麼?Chance36你好: 1.是DBGRID !! 2. 欄位名稱就如上圖所示(灰色區域即為欄位名稱)!! 當在 datasource1 B3 那一格 輸入 5(數字) 即可在 datasource2 B3 那一格 程式產生今天的日期0413(文字) 煩請勞心 THANKS!! 發表人 - miguel 於 2004/04/13 19:22:57 發表人 - miguel 於 2004/04/13 19:24:53 |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
miguel 你好
在datasource1所連結的 Dataset(假設為Tdataset1),的BeforPost事件 If Tdataset1.FieldByName('3').OldValue.OldValue<> Tdataset1.FieldByName('3').OldValue.CurValue Then // '3'可當欄位名稱嗎????? // 先找到相同的NO If TDataSet2.Locate('NO',Tdataset1.FieldByName('NO').AsString,[]) Then Begin TDataset2.Edit; TDataset2.FieldByname('3').AsString := FormatDataTime('mmdd',Now); TDataset2.Post; End;發表人 - chance36 於 2004/04/13 19:57:56 |
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
您的目的是要每個欄位更新時, 可以存入相對應的更新日期
若是如此, 小弟建議把欄位鍵再同一個Table, 這樣子存取資料比較方便. 例如 Table1 有 A,B,C 三個欄位, 相對應更新日期欄位為 A_DT,B_DT,C_DT, 總共六個欄位. 以下範例不限欄位數 1. Open 時 把日期欄位隱藏
procedure TForm1.Button1Click(Sender: TObject); Var i: Integer; up_str:String; begin up_str:='_DT'; query1.Close; query1.Open; query1.CachedUpdates:=true; //for batch update for i:=0 to query1.FieldCount-1 do begin if pos(up_str,query1.Fields[i].FieldName)>0 then query1.fields[i].Visible:=false; end; end;2. 更新時把日期寫進去, 寫在BeforePost procedure TForm1.Query1BeforePost(DataSet: TDataSet); Var i : Integer; up_str: String; begin up_str:='_DT'; for i:=0 to dataset.FieldCount-1 do if pos(up_str,dataset.Fields[i].FieldName)=0 then begin if (dataset.Fields[i].AsString<>dataset.Fields[i].OldValue) then if (Dataset.State=dsedit) then Dataset.FieldByName(dataset.Fields[i].FieldName up_str).AsString:=FormatDateTime('mmdd',Now); end; end;3. 寫到資料庫 procedure TForm1.Query1AfterPost(DataSet: TDataSet); begin query1.ApplyUpdates; end;發表人 - yachanga 於 2004/04/14 10:19:09 |
morice
一般會員 發表:4 回覆:26 積分:16 註冊:2003-03-11 發送簡訊給我 |
|
morice
一般會員 發表:4 回覆:26 積分:16 註冊:2003-03-11 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 可是實際上我的欄數有225欄(真的) 這種寫可能會很累!! 有沒辦法判斷 他在DBGRID1 那一CELL更新, 即可在 DBGRID2 相同欄位 程式寫入當天日期!!miguel 你好 那你可改在dbGrid1.OnCellClick事件中處理 Var Field : TField ; Begin Field := dbGrid1.SelectedField ; If Field.OldValue<> Field.CurValue Then Begin// If DataSet2.FieldByName('NO').AsString <> DataSet1.FieldByName('NO').AsString Then Begin // 先找到相同的NO TDataSet2.Locate('NO',Dataset1.FieldByName('NO').AsString,[]) ; End; If DataSet2.FieldByName('NO').AsString = DataSet1.FieldByName('NO').AsString Then Begin TDataset2.Edit; TDataset2.FieldByname(Field.FieldName).AsString := FormatDataTime('mmdd',Now); TDataset2.Post; End; End; End; |
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |