2009-07-08 151 views
1

我正在用會員表單創建圖書館管理應用程序。自動更新狀態列

會員類型有:

  1. 半年度
  2. 每年
  3. 贊助人(15分鐘)
  4. 終身會員

現在我在SQL Server中設計了一個表2008組成:

  1. 成員Id
  2. 名稱
  3. 加入日期
  4. 截止日期
  5. 狀態

狀態由要麼M會員或E過期籍。

現在我想讓這個任務自動發生。

例如,如果成員的到期日期是昨天,那麼它應該自動將狀態更改爲E

我該怎麼做?

+0

不需要額外的感嘆號。人們正在閱讀這些問題,希望能幫助你:) – Jared 2009-07-08 04:12:34

+0

你能否更新你的問題標題以避免模棱兩可? – Jared 2009-07-08 04:15:00

回答

2

使用過期日期NULL作爲您的生活會員會員。然後,create a SQL Server Agent job揭開序幕下面的語句和運行,每15分鐘(或5):

UPDATE 
    Membership 
SET 
    Status = 'E' 
WHERE 
    Status = 'M' AND ExpirationDate < getdate() 
    AND ExpirationDate IS NOT NULL 
-1

你可以create a SQL Jobschedule它每天晚上運行,以更新狀態標誌。這是一個overview讓你開始吧。

評論:我不確定您是否將您的數據庫視爲具有此要求的獨立數據源。它看起來更像是更新此狀態標誌的商業案例。如果稍後更新過期日期,會發生什麼情況?您還必須更新狀態標誌。您可能希望您的應用程序解釋過期日期。

感謝, -Tom

+0

感謝您的回覆。 其實我沒有安裝Sql server代理。 你能告訴我SQL SERVER AGENT可以作爲FreeWare的鏈接嗎? 請幫我一把! – sheetal 2009-07-08 04:55:48

1

如何使用計算列?

在表設計器內部選擇您的狀態列,轉到列屬性並選擇節點「計算列指定」。在此輸入公式:

CASE WHEN ExpirationDate IS NOT NULL AND ExpirationDate < GETDATE() THEN 'E' ELSE 'M' END 

對此的唯一負面影響是,它無法被索引。

0

如果您正在將記錄加載到對象中,爲什麼不使用對象的屬性來向您顯示「member」/「expired」?

這種自動操作並不適合持久性數據存儲。如果您真的需要,可以使用Greco建議的計算列,但正確地指出這可能會演變爲性能問題。