iT邦幫忙

DAY 18
2

我努力當個報表達人:一招半式闖江湖的經驗分享系列 第 15

報表開發過程中曾經遇到過的問題分享-log應用

  • 分享至 

  • xImage
  •  

財產管理者在看各種庫存型報表的時後,如果發現實際數量與報表數量不相符的時候,要如何查出可能的問題點,造成與報表資料兜不起來,這一篇文章主要是在介紹這個議題,有一點像是LOG功能的應用
在開發倉儲管理系統的時候,我透過SQL SERVER的Trigger、資料庫備份還原功能及簡易的log程式,來作出資料的反推效果,也就是說可以讓我在本機電腦透過資料庫還原功能,來查出說可能發生問題的時間點(造成數量不吻和),也因此資料庫要每天備份兩次,第一次是使用完整備份的方式,而之後可以使用差異備份的方式來進行

也因此我就可以在我的電腦上來還原到某個時間點,來看出說當時庫存數量的狀況

而針對物品資料表、領用記錄資料表等倉儲系統表格我會加上TRIGGER,對資料表有新增、刪除或修改動作後,測錄到對應的資料表上,例如我對領用記錄表建立一個刪除的觸發程序,語法約略如下
USE [EIP]
GO
/****** Object: Trigger [dbo].[deleted_log] Script Date: 2013/10/03 下午 01:23:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[deleted_log]
on [EIP].[dbo].[Product_Record]
after delete
as
if @@rowcount > 0
insert into [EIP].[dbo].[ Product_Record_Delete] select * from deleted

就可以看出說那個時間點那個產品資料被刪除掉,同樣的如果要看出說那個資料表在那個時間點有被修改過,就可以針對那個資料表多一個修改的觸發程序,語法約略如下
CREATE TRIGGER [TRIGGET_TABLE_A_UPD1]
ON [dbo].[item8]
AFTER /*INSERT,DELETE,*/ UPDATE --只做更新的trigger, 就不要加上INSERT 和DELETE
AS
BEGIN
SET NOCOUNT ON;
begin
update [dbo].[item8] set E2 = I.E2
From Item8 AS Target
INNER JOIN Inserted As I ON Target.XX = I.XX -- Item8和 item8-1 之間應該有關聯, 比如主索引相同之類的
INNER JOIN DELETED AS D ON I.XX = D.XX -- INSERTED和DELETED之間應該也有相關聯的欄位
WHERE I.E2 <> D.E2
end
END
再加上我有在每支程式上,針對使用者的一些關鍵動作,作一個LOG記錄功能,語法約略如下(副程式的那一段語法)

Public Shared Function log(ByVal no As String,ByVal date1 as date,ByVal Ip as string,ByVal note as string) As String
‘新增到LOG資料表

所呈現出來的效果如下

透過SQL SERVER資料庫還原功能、TRIGGER觸發程序及LOG程式,來做出庫存資料的反推,試著找出可能造成庫存量不吻合的原因點,在跟財產管理者交互確認,讓庫存資料更加精確,如果庫存資料有誤,也可以快速的找出可能的問題點。基本上這類型的LOG程式如果開發的完整又確實的話,進銷存個管理會很順暢,程式開發者在做資料反推的時候,也可以更快找出可能的問題點。


上一篇
報表開發過程中曾經遇到過的問題分享-2
下一篇
報表開發過程中曾經遇到過的問題分享-log應用2
系列文
我努力當個報表達人:一招半式闖江湖的經驗分享27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言