問題:
如何讓 ACCESS 在每周周一0點清除上周的所有數(shù)據(jù)?
方法一:
方法非常多,可以完全靠 ACCESS 本身的功能,也可以靠 WINDOWS 控制面板中的任務(wù)計劃結(jié)合 ACCESS 來完成,甚至可以用WINDOWS 控制面板中的任務(wù)計劃結(jié)合 VBS 腳本來完成。
首先介紹完全用 ACCESS 來完成
建立一個窗體來實現(xiàn)即可
--新建一個窗體,將下列代碼 COPY 到該窗體的代碼模塊中
--定義一個變量來存儲預(yù)定時間,你也完全可以將時間放在數(shù)據(jù)表中
Dim dte As Date
Private Sub Form_Open(Cancel As Integer)
--定義時間間隔,每隔8秒檢測一次時間
Me.TimerInterval = 8000
--預(yù)定兩分鐘后執(zhí)行某段代碼
dte = DateAdd("n", 2, Now())
End Sub
Private Sub Form_Timer()
--這里判斷現(xiàn)在時間是否已經(jīng)到達預(yù)定時間
If Now() > dte Then
MsgBox "這里可以執(zhí)行某段代碼"
--執(zhí)行一次代碼后調(diào)整預(yù)定時間再次準備執(zhí)行,
--你也可以編寫其他程序詢問可以是否繼續(xù)執(zhí)行,
--如果不要繼續(xù)執(zhí)行設(shè)定 Me.TimerInterval = 0 即可。
Dte = DateAdd("n", 2, Now)
End If
End Sub
Private Sub 主體_Click()
Dim lngSelect As Long
Dim strMSG As String
strMSG = "當你單擊窗體時,本窗體會隱藏,在后臺執(zhí)行程序" & vbCrLf & _
"如果你要恢復(fù),請依次單擊 菜單 -> 窗口 -> 取消隱藏 -> 確定" & _
vbCrLf & "如果要隱藏請單擊“是”,不要隱藏請單擊“否”"
lngSelect = MsgBox(strMSG, vbYesNo, "請選擇…")
If lngSelect = vbYes Then
Me.Visible = False
End If
End Sub
有網(wǎng)友說上述功能要實現(xiàn),ACCESS 必須 24 小時開著,否則如果要實現(xiàn)“每周周一0點清除上周的所有數(shù)據(jù)”這樣的功能就不行了。
這里就要說一下原理的問題了。各位網(wǎng)友先想一下以下問題:
1.1:一定要周一0點運行上述程序么?
1.2:你必須有客戶端要求獲取數(shù)據(jù),這個時候你才能確定數(shù)據(jù)是否清除,是么?
1.3:也許你是沒有客戶端要求讀取數(shù)據(jù),而是有客戶端不斷寫入數(shù)據(jù),但是如果本周一0點以前的數(shù)據(jù)必須清除沒有清除會造成寫入數(shù)據(jù)的錯誤,是么?
現(xiàn)在就來說解決方案
2.1:數(shù)據(jù)庫本身沒必要自動感知今天是否周一0點,是否要去清除數(shù)據(jù)
2.2:你可以在要被清除數(shù)據(jù)的表中加一個時間字段。在1.2和1.3的代碼執(zhí)行前去判斷是否有過期數(shù)據(jù)。如果有,清除,然后執(zhí)行正常的操作;如果沒有,直接執(zhí)行正常的操作。
方法二:
WINDOWS 控制面板中的任務(wù)計劃結(jié)合 ACCESS 來完成也可以。
1、將所有要執(zhí)行的步驟寫為某個 VBA FUNCTION。舉例:名為 MyExec
2、要在打開數(shù)據(jù)庫時運行 Visual Basic for Applications 過程,請在 Autoexec 宏或通過使用命令行選項 /x 來運行的宏中使用 RunCode 操作。舉例:創(chuàng)建一個名為 aaa 的宏,操作為 RunCode ,函數(shù)名 MyExec()
3、在WINDOWS 控制面板中的任務(wù)計劃中創(chuàng)建計劃,用類似以下命令行:
"D:\Program Files\Microsoft Office\OFFICE11\msaccess.exe" c:\temp\db6.mdb /x aaa
注意:ACCESS 2003 有安全警告 功能,在默認設(shè)置下無法直接用命令行打開 MDB 后立即運行代碼,必須還要單擊一個“打開”按鈕。要去掉此項設(shè)置可以降低安全級別或者用數(shù)字證書。
如何取消 Access2003 剛打開的安全警告或者 RUNTIME 的安全警告?《發(fā)布》
http://access911.net/index.asp?u1=a&u2=72FAB01E11DCEFF3
數(shù)字證書相關(guān)內(nèi)容可以參考MSDN。