如何COPY 字段的值(20分)

  • 主题发起人 主题发起人 m&m
  • 开始时间 开始时间
M

m&m

Unregistered / Unconfirmed
GUEST, unregistred user!
往数据库中录入一条信息后,在录入下一条时,将该条记录的

某些字段的值带入到下一条。
 
记得在PB、PO等开发工具中,控件本身有这样的属性。

DELPHI 没有吗?

我想Trigger 也可以完成,不过有DELPHI 自己的方法吗 ?
 
var
OldValue:Variant;

DataSet.BeforeInsert:
begin
with Sender do
if not eof then
OldValue:=FieldByName('xxx').Value;
end;

DataSet.AfterInsert:
begin
with Sender do
FieldByName('xxx').Value:=OldValue;
end;

大概思路是这样的,应该可以实现,具体控制你自己研究吧。
 
你用的是什么数据库,如果是Interbase,Sql server等的话,可以将此处理
放入触发器。
如果是本地paradox。可用蚯蚓的方法
 
下面给出一个例子,是将前一记录的FieldName+1赋给新插入的记录。
CREATE TRIGGER aaa FOR TableName
AFTER INSERT POSITION 0
AS
BEGIN
UPDATE TableName
SET
FieldName=OLD.FieldName+1
WHERE TableName.ID=New.ID;
SUSPEND;
END
 
我用的是 ORACLE
 
诸位高手:

能否可以考虑给现有的控件加入这种复制属性呢 ???

不知道 DELPHI 能否实现 ?望大虾们赐教 !!!!
 
我发现富翁们都起得晚
 
to Hexi:
“UPDATE TableName SET FieldName=OLD.FieldName+1 WHERE TableName.ID=New.ID;”
如何得到TableName.ID 和 New.ID ?
 
to Hexi:

你说的 ID 指的是 ROWID 吗?

“SUSPEND;”----- 嘛意思 ?
 
我写的是Interbase的Trigger.
TableName.ID是自动有Interbase提供的。
New是Interbase提供的,你新插入或修改的记录。
Suspend可以不要。
 
对于ORACLE 来说,TRIGGER 可能不能解决。
此时,只有当往数据库中插入记录时,TREIGGER
才被激活。
蚯蚓的办法道是保险一些。
另外,能否给现有控件加一个这种属性?如
何加?
 
trigger一般不好用,尤其中调试过程中。
还是在delphi解决为好,蚯蚓的办法我觉得
还是不太好,一是insert每一条记录时,情况
不同,难以控制;二是程序难以维护,
所以还是用变量吧.
 
to spear:

“......还是用变量.......”

此话怎讲 ?
 
多人接受答案了。
 
后退
顶部