怎样使下一条记录继承前一条记录的记录值。(50分)

  • 主题发起人 主题发起人 ggg
  • 开始时间 开始时间
G

ggg

Unregistered / Unconfirmed
GUEST, unregistred user!
如果在进行记录登记时存在大量的重复性记录,那么增加一个继承功能是很有必要的。

就是将前一条记录继承给下一条记录,下一条根据需要稍做修改成为新的记录。

对于这项功能,我以前是这么干的(定义一个过程):

procedure Tswdj.CopyTo;
var
swrq,cwrq,wjh,ys,fs,qsr:string;
begin
wjtm:=dbedit1.Text;
ftm:=dbedit2.Text;
:
:
ys:=dbedit8.Text;
fs:=dbedit9.Text;
datamodule5.TBsw.Append;
with datamodule5.TBsw do
begin
if cwrq<>'' then fieldbyname('wjrq').AsDateTime:=strtodate(cwrq);
if wjh<>'' then fieldbyname('wjh').AsInteger:=strtoint(wjh);
:
:
fieldbyname('flh').AsString:=flh;
fieldbyname('fjtm').AsString:=fjtm;

end;
end;

其中删去很多,实际程序比这要长得多,各位有何高招是程序简练些?
 
在With之前是否还得有Edit1.Text的赋值操作,才能将修改后的内容写入数据库。
我认为不用TDBEdit为好,直接使用TEdit.
 
参见已答</A HREF="http://202.120.85.61/delphibbs/DispQ.asp?LID=100783">问题</A>,摘录其中主要部分
xixi的回答

全局变量
var
vtRec: Variant;
在beforeinsert事件中写入

var i: Integer;
begin
if DataSet.IsEmpty then
Exit;

if VarIsEmpty(vtRec) then
vtRec := varArrayCreate([0, DataSet.FieldCount - 1], varVariant)
else
VarArrayRedim(vtRec, DataSet.FieldCount - 1);//Resize the variant array.
RecDataSet := DataSet;
for i := 0 to DataSet.FieldCount - 1 do
vtRec := DataSet.Fields.Value;
end;
在afterinsert中写
var i: Integer;
begin
if (VarIsEmpty(vtRec)) then
exit;
for i := 0 to DataSet.FieldCount - 1 do
DataSet.Fields.Value := vtRec;
end;
 
已答问题: 对不起,刚才没写好,在贴一次
http://202.120.85.61/delphibbs/DispQ.asp?LID=100783
 
你的方法也不很繁啊。能实现就可以了,将你的精力放到别的上面去,你可以这样想
:“在我的下一版本上实现此功能,现在就这样吧“:)
 
多人接受答案了。
 
后退
顶部