在DBGRID中怎样实现数据的拷贝???(50分)

  • 主题发起人 主题发起人 LIUYECAI
  • 开始时间 开始时间
L

LIUYECAI

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在DBGRID,DBEDIT 中实现数据的拷贝.不知那些大虾能否帮一下忙!
实现这样的功能:当DBGRID和DBEDIT中指向数据库的一条记录时,我想COPY
这条记录,并将它作为数据库中的另一条记录保存下来!!
 
variant

或使用存储过程中的光标
 
TO: JPW
能具体的说说你的做法吗?
 
1、通过Query/Table等可以得到当前的记录
2、将他们存入另一Table中就行了
 
不太明白你说的意思!
dbgrid指向某条记录的时候,可以直接对其数据源的dataset读取值,
增加记录用append或者appendrecord方法都可以完成。
 
多谢诸位:
问题是这样的:
数据表的当前记录在DBGRID,DBEDIT中显示出来,现在我想将这条记录复制下来,
经修改后再作为一条新记录更新到数据表中去!!
这样做的目的是为了减少用户的工作量(输入记录时),因为有的记录有很多字段是相同的,
所以我想实现可以复制的功能!
 
直接用UPDATE语句就可以
 
实在不行的话,就做一个结构一样的临时表吧,把当前的记录直接用一条SQL语句插入到临时
表,然后编辑,再Insert或是Update到目的数据库中去就行。
 
实在不行的话,就做一个结构一样的临时表吧,把当前的记录直接用一条SQL语句插入到临时
表,然后编辑,再Insert或是Update到目的数据库中去就行。
 
简单呀. 可以一次读取一条记录到内存(TDataSet.GetCurrentRecord), 然后append一
条空记录,
将内存中的值一次赋到新记录中就可以了:
with DataSet do
begin
Append;
Move(Buffer^, ActiveBuffer^, RecordSize);
Post;
end;
其中Buffer就是用GetCurrentRecord取得的前面某条记录中的所有字段值.
RecordSize是TDataSet的一个属性, 指明当前记录数据占用的内存字节数.
 
Another_eYes:
你的方法是把整条记录都拷贝下来了,
但是我的表中有关键字,所以要修改后才能更新.
帮帮忙吧!
 
Another_eYes的方法不行的话就自己编程吧。

public
{ Public declarations }
sleaveNo,sDates,sDatee,sHours:string;// sEmpno,
end;
procedure Tdm.QaskleaveBeforeInsert(DataSet: TDataSet);
begin
// sEmpno:=FrmAskleave.DBEdit1.Text;
sleaveNo:=FrmAskleave.DBEdit2.Text;
sDates:=FrmAskleave.DBEdit3.Text;
sDatee:=FrmAskleave.DBEdit4.Text;
sHours:=FrmAskleave.DBEdit5.Text;
end;

procedure Tdm.QaskleaveAfterInsert(DataSet: TDataSet);
begin
// FrmAskleave.DBEdit1.Text:=sEmpno;
FrmAskleave.DBEdit2.Text:=sleaveNo;
FrmAskleave.DBEdit3.Text:=sDates;
FrmAskleave.DBEdit4.Text:=sDatee;
FrmAskleave.DBEdit5.Text:=sHours;
end;

 
关键字自己修改,然后将重复的值作为缺省值插入就可以了吧! ^-^
 
多人接受答案了。
 
后退
顶部