請問如何用簡單的方法將目前的這筆資料,再複製一筆!! |
答題得分者是:rovi
|
小蚊子
中階會員 發表:55 回覆:267 積分:94 註冊:2002-06-08 發送簡訊給我 |
例如 : table 中有一筆資料 ,欄位很多
FF01 FF02 FF03 FF04 FF05 (欄位名稱) A0001 張大德 桃園縣 龍潭鎮 男 ........... (實體資料) 現在要輸入新的資料,除了人名外,其他資料都雷同
我想是否可以做一快速 "複製" 按鍵,按下後,馬上複製這一筆
USER 只要修改人名(FF02)及編號(FF01) 即可以. A0002 李小龍 桃園縣 龍潭鎮 男 ........... (實體資料) 謝謝您!! 發表人 - 小蚊子 於 2004/04/01 19:41:46
|
rovi
一般會員 發表:2 回覆:10 積分:12 註冊:2002-05-08 發送簡訊給我 |
剛好昨天補了Dos時代的舊功能: 增加"拷貝此筆記錄","貼上記錄內容"功能
Bcd1 也可使用 TTable Bcd1: TBDEClientDataSet;
private
{ Private declarations }
vRec: variant;
sRecFields: string; procedure TFmDataDic.miCopyRecClick(Sender: TObject);
var i: integer;
s: string;
begin
s := '';
for i := 0 to bcd1.FieldCount-1 do
s := s bcd1.Fields[i].FieldName ';';
if s<>'' then Delete(s, Length(s), 1);
sRecFields := s;
vRec := bcd1[sRecFields];
end; procedure TFmDataDic.miPasteRecClick(Sender: TObject);
begin
try
bcd1.Edit;
bcd1[sRecFields] := vRec;
except
end;
end;
|
rovi
一般會員 發表:2 回覆:10 積分:12 註冊:2002-05-08 發送簡訊給我 |
procedure TFmDataDic.miInsertSameRecClick(Sender: TObject);
var i: integer;
s: string;
v: variant;
begin
s := '';
for i := 0 to bcd1.FieldCount-1 do
s := s bcd1.Fields[i].FieldName ';';
if s<>'' then Delete(s, Length(s), 1);
sRecFields := s;
v := bcd1[sRecFields];
bcd1.Insert;
bcd1[sRecFields] := v;
end;
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
小蚊子 你好: 我是將 TDataSet.AppendRecord Method 變形一下:
須注意 Unique Key 重複的問題喔.
procedure MyAppendRecord(CD: TDataSet; KeyValues: Variant); var KeyArray : Array of TVarRec; i,aCount : Integer; begin if VarIsArray(KeyValues) then aCount := VarArrayHighBound(KeyValues,1) 1 else aCount := 1; SetLength(KeyArray, aCount); if VarIsArray(KeyValues) then begin for i := 0 to aCount - 1 do begin KeyArray[i].VType := vtVariant; GetMem(KeyArray[i].VVariant,Sizeof(Variant)); FillChar(KeyArray[i].VVariant^,Sizeof(Variant),0); KeyArray[i].VVariant^ := Variant(KeyValues[i]); end; end else begin KeyArray[0].VType := vtVariant; GetMem(KeyArray[0].VVariant,Sizeof(Variant)); FillChar(KeyArray[0].VVariant^,Sizeof(Variant),0); KeyArray[0].VVariant^ := Variant(KeyValues); end; CD.AppendRecord(KeyArray); if VarIsArray(KeyValues) then for i := 0 to aCount - 1 do FreeMem(KeyArray[i].VVariant,Sizeof(Variant)) else FreeMem(KeyArray[0].VVariant,Sizeof(Variant)); end; procedure TForm1.Button1Click(Sender: TObject); var i : integer; Fields: string; begin Fields := ''; for i := 0 to Query1.FieldCount - 1 do Fields := Fields Query1.Fields[i].FieldName ';'; MyAppendRecord(Query1,Query1[Fields]); end; |
小蚊子
中階會員 發表:55 回覆:267 積分:94 註冊:2002-06-08 發送簡訊給我 |
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
提供另一種解法: procedure TForm1.BitBtn1Click(Sender: TObject); Var v : variant ; Flds :String ; Sl : TStrings ; begin Sl := TStringList.create; Dataset.GetFieldNames(Sl); Flds := Sl.CommaText; Sl.Free; Flds := StringReplace(Flds,',',';',[rfReplaceAll]); // 以下與上面rovi大大的寫法是相同的 v := DataSet[Flds]; DataSet.Append; DataSet[Flds] := v; // 在這修正不同的欄位資料 DataSet.post; end;_______________________________________ 深藍的魚,祝您好運..........連連 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |