第6章EEP 2019基礎設計(下)第6章EEP 2019基礎設計(下)\6-5 LogInfo的應用

6-5 LogInfo的應用

前文中透過InfoTransaction可來實現交易檔案間的Log功能(如使用AlwaysAppend的方式),但這裏的LogInfo則是用來記錄基本資料檔案或各種單據的異動記錄,所謂異動記錄就是User有對該資料或單據進行新增更改或刪除時,都可以利用本LogInfo元件來記錄下來。使用的方法如下文的說明。

 

我們就舉例要對Products(產品檔)進行異動管制與記錄,因此我們設計一個新表(如果已有此表,則此步驟省略),名字為Products_Log,資料結構與Products幾乎完全一樣,但多了一些欄位,如Log_ID欄位,為Identity型態,來作為主鍵(沒有特別的需求下,請務必配合開立此Identity型態欄位);一個為Log_state欄位為char(1),記錄資料異動狀態(如新增、刪除、修改);一個為Log_Date欄位為DateTime類型,記錄資料異動的時間;再一個Log_User欄位,記錄更改資料的用戶編號,其Table結構如下:

 

CREATETABLE [Products_Log] (

      [Log_ID] [int] IDENTITY (1, 1)NOT NULL ,

      [ProductID] [int] NULL ,

      [ProductName] [nvarchar] (40)NULL ,

      [SupplierID] [int] NULL ,

      [CategoryID] [int] NULL ,

      [QuantityPerUnit] [nvarchar] (20)NULL ,

      [UnitPrice] [money] NULL ,

      [UnitsInStock] [smallint] NULL ,

      [UnitsOnOrder] [smallint] NULL ,

      [ReorderLevel] [smallint] NULL ,

      [Discontinued] [bit] NULL ,

      [Log_State] [nvarchar] (1)NULL ,

      [Log_User] [nvarchar] (10)NULL ,

      [Log_Date] [datetime] NULL ,

    [LastPurchasePrice] [money] NULL ,

      CONSTRAINT [PK_Products_Log] PRIMARYKEYCLUSTERED

      (

            [Log_ID]

      )ON [PRIMARY] ,

)ON [PRIMARY]

GO

 

Step1打開原來的S003項目,增加一個LogInfo元件,命名為lgMaster。將ucMaster(就是UpdateComp元件)的『LogInfo』設定為【lgMaster】。(讓ucMaster對應到這個LogInfo元件)。

6-5-1增加LogInfo元件

 

Step2設定lgMaster屬性。

Œ  設定lgMasterLogTableName屬性為Products_Log代表要Log到那一個Table名稱(可以用下拉去選TableName);

   設定『LogIDField』屬性為【Log_ID】(同樣下拉選欄位);

Ž   設定『MarkField』屬性為【Log_State】;

   設定『ModifierField』屬性為【Log_User

   設定『ModifyDateField』屬性為【Log_Date

‘  設定『NeedLog』屬性為【True】。這個屬性是用來確定是否要將資料Log到目的表,所以一定要設為True才能讓Log機制生效;

’  設定『OnlyDistinct』屬性為【False】。代表所有欄位不管有沒有異動都會Log下來,如果設為True,則表示只有異動的欄位才會有記錄;

“  SrcFieldNames屬性是設定哪些欄位需要進行Log操作,如果沒有設定,表示全部。

6-5-2設定lgMaster屬性

Step3S003項目進行編譯,並讓EEPNetClient.EXE重新執行。打開C003,我們將找一筆5號的產品號碼去更改他的產品名稱與庫存單位(名稱請改為TEST,庫存單位改成“KGS)。

6-5-3修改資料

 

我們可以事先打開SQL Profiler來監看,在5號產品存檔時,我們就可以透過Profiler看到Products_Log的記錄內容,也可以自行再試下一下新增與刪除的動作,對Products_Log而言也會忠實的記錄下來。




 

Top of Page