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

Dbgrid 相隔欄位自動輸入(很急T_T")

尚未結案
miguel
一般會員


發表:26
回覆:20
積分:9
註冊:2002-03-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-13 17:05:28 IP:61.221.xxx.xxx 未訂閱
如下圖所示 兩各不同來源的 TABLE(欄位一樣) 當在    datasource1 B3 輸入 5  即可在  datasource2 B3 程式產生今天的日期0413 ~~      煩請各位高手出招!! 發表人 - miguel 於 2004/04/13 17:07:43 發表人 - miguel 於 2004/04/13 18:42:48
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-13 19:11:39 IP:211.20.xxx.xxx 未訂閱
miguel 你好 畫面上的是dbGrid嗎?還是stringGrid,相關的欄位名稱是什麼?
miguel
一般會員


發表:26
回覆:20
積分:9
註冊:2002-03-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-13 19:21:21 IP:61.221.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-13 19:32:47 IP:211.20.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-14 08:49:42 IP:61.221.xxx.xxx 未訂閱
Chance36 你好: 非常感謝 你的 回覆,可是實際上我的欄數有225欄(真的) 這種寫可能會很累!! 有沒辦法判斷 他在DBGRID1 那一CELL更新, 即可在 DBGRID2 相同欄位 程式寫入當天日期!!
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-14 10:17:30 IP:211.74.xxx.xxx 未訂閱
您的目的是要每個欄位更新時, 可以存入相對應的更新日期 若是如此, 小弟建議把欄位鍵再同一個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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-14 10:54:32 IP:61.221.xxx.xxx 未訂閱
在onclick內 adoquery2.recno:=adoquery1.recno; adoquery2.fieldbyname(colunm.title.caption):=今天的日期 試試看吧
morice
一般會員


發表:4
回覆:26
積分:16
註冊:2003-03-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-14 10:56:47 IP:61.221.xxx.xxx 未訂閱
補充上面:在oncellclick事件內
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-14 14:46:49 IP:211.20.xxx.xxx 未訂閱
引言: 可是實際上我的欄數有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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-14 16:28:10 IP:61.221.xxx.xxx 未訂閱
感謝 各位的 大力幫忙!! 尤其是 Chance36 !! 以解決問題了!! 感謝 各位回應!!
系統時間:2024-05-19 3:31:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!