全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1469
推到 Plurk!
推到 Facebook!

請問如何複製一筆資料到新增加的資料錄呢?

答題得分者是:herbert2
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-19 22:07:33 IP:59.125.xxx.xxx 未訂閱
請問各位大大如何複製一筆資料到新增加的資料呢?

在執行下面的程式碼OldFds[i]出現錯誤請問要如何改才對呢?
資料表共有7個欄位


謝謝!謝謝!
[code cpp]
Variant OldFds;

void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldFds=VarArrayCreate(OPENARRAY(int,(1,6)),varVariant);
}
void __fastcall TForm1::Button2Click(TObject *Sender)//複製
{
for(int i =1;i<7;i )
OldFds[i]=ADOTable1->Fields->Fields[i]->AsVariant;
}
void __fastcall TForm1::Button3Click(TObject *Sender)//貼上
{ ADOTable1->Insert();
for(int i =1;i<7;i )
ADOTable1->Fields->Fields[i]->AsVariant=OldFds[i];
}

[/code]


我參考了下面的程式碼
定義 OldFds:variant;
2.在TForm Create事件中
OldFds := VarArrayCreate([0, DataSet.FieldCount-1], varVariant);
3.保存記錄值在DataSet之BeforePost事件中
for i:=0 to DataSet.FieldCount-1 do
OldFds[i]:=DataSet.Fields[i].Value;
4.下一筆新增中在Dataset之OnNewRecord事件中
for i:=0 to DataSet.FieldCount-1 do
DataSet.Fields[i].Value:=OldFds[i];
------
-謝謝大大熱心的回覆!謝謝!
編輯記錄
l90425 重新編輯於 2008-11-19 22:11:16, 註解 無‧
l90425 重新編輯於 2008-11-19 22:13:02, 註解 無‧
l90425 重新編輯於 2008-11-20 14:02:41, 註解 無‧
l90425 重新編輯於 2008-11-20 14:08:59, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-19 23:17:17 IP:211.72.xxx.xxx 訂閱
先澄清下列問題:
(1) 標題: 複製一筆資料到新增加的資料.
(2) OldFds[i]=ADOTable1->Fields->Fields[i]->AsString; // 為何不使用 AsVariant ?
(3) 複製之後, 您又存回去原資料, 那來的新增加的資料.
要先令 ADOTable1->Insert() 才會有新的資料.
同樣的 ADOTable1->Fields->Fields[i]->AsString=OldFds[i]; // 也應使用 AsVariant !
(4) 您一股腦全把舊錄的欄值全填入心錄各欄要作啥用?
一檔中, 不應該有兩筆完全一樣內容的資料錄, 至少要有一欄主 Key 是唯一的.
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-20 14:06:16 IP:59.125.xxx.xxx 未訂閱
因為碰到了OldFds[i]出現錯誤的問題,所以還沒有去修改成"不會全部都有相同的內容"
請問OldFds[i]應該怎麼寫才對呢?

謝謝!謝謝!

===================引 用 herbert2 文 章===================
(4) 您一股腦全把舊錄的欄值全填入心錄各欄要作啥用?
一檔中, 不應該有兩筆完全一樣內容的資料錄, 至少要有一欄主 Key 是唯一的.
------
-謝謝大大熱心的回覆!謝謝!
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-20 15:29:16 IP:59.125.xxx.xxx 未訂閱
問題已經解決了!
謝謝!謝謝!

下面測試的程式碼
[code cpp]
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldFds=VarArrayCreate(OPENARRAY(int,(1,6)),varVariant);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
for(int i =1;i<7;i )
{
Variant Old;
Old=ADOTable1->Fields->Fields[i]->AsVariant;
OldFds.PutElement(Old,i);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ADOTable1->Insert();
for(int i =1;i<7;i )
ADOTable1->Fields->Fields[i]->AsVariant=OldFds.GetElement(i);
}

[/code]
------
-謝謝大大熱心的回覆!謝謝!
系統時間:2017-12-11 15:27:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!