K3有个外挂系统是K+,可以对数据进行修改,但是没有日志功能,谁修改了什么、什么时候修改的不知道,借鉴t_log做一个日志
1、先建一个日志表
CREATE TABLE [dbo].[kplus_log](
[FlogID] [int] IDENTITY(1,1) NOT NULL,
[FDate] [datetime] NOT NULL,
[FDescription] [nvarchar](200) NULL,
[FMachineName] [varchar](50) NULL,
[FIPAddress] [nvarchar](30) NULL
) ON [PRIMARY]
2、再修改ICMO_UPDATE触发器,增加以下代码
--------------------------------------------------------
----增加判断,当用K+“自定义图纸接收登记表”进行修改时,将日志存到KPLUS_LOG中去
declare @CurrentMachineName as varchar(50);
declare @IP as varchar(30);
declare @Description as varchar(250);
--当实际到货日期变更时进行记录
if update(FHeadSelfJ01110)
begin
--获取操作的IP 和机器名
SELECT @IP=convert(varchar(30),CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') ) , @CurrentMachineName=HOST_NAME();
---获取实际到货日期的值
select @Description ='任务单'+ FBillNo +'实际到货日期变更为' +CONVERT(varchar(30),FHeadSelfJ01110,111 ) from INSERTED
if @Description<>''
begin
INSERT INTO kplus_log (FDate,FDescription,FMachineName,FIPAddress)
VALUES (getdate(), @Description,@CurrentMachineName,@IP)
end
end
--当申请入库日期变更时进行记录
if update(FHeadSelfJ01110)
begin
--获取操作的IP 和机器名
SELECT @IP=convert(varchar(30),CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') ) , @CurrentMachineName=HOST_NAME();
---获取实际到货日期的值
select @Description ='任务单'+ FBillNo + '申请入库日期变更为' + CONVERT(varchar(30),FHeadSelfJ01111,111 ) from INSERTED
if @Description<>''
begin
INSERT INTO kplus_log (FDate,FDescription,FMachineName,FIPAddress)
VALUES (getdate(), @Description,@CurrentMachineName,@IP)
end
end
效果
本来想加上K3用户名的,但不知道这个东西如何在SQL中可以直接获取,有知道的大侠可以告知一下。
还有这个还是有点问题,如果修改是通过其他触发器变更的,是不会记录下来的,只有通过程序变更才能记录。