2013-10-24 78 views
1

我完全是Access的新手(有一些SQL服務器的經驗)。MS訪問日期觸發器模擬

我不確定它是否可能在MS Access 2010中: 如果對於table.dateField之一是今天或早些時候 - 需要發送有關該記錄的電子郵件。

廣泛的挖掘不會帶來任何結果,似乎不可行,但希望在這方面的羣體意見。 謝謝

+0

Access 2010中數據的宏具有[SendEmail](http://msdn.microsoft.com/en-us/library/office/ff196780%28v=office.14%29.aspx)宏操作。你嘗試過嗎? –

+0

@GordThompson Tt不符合我的要求我的要求 - SendEmail將只對某些記錄的操作進行操作。我甚至需要在數據庫中沒有任何活動有一個觸發器,將通知該日期是今天和電子郵件必須發送不管...感謝評論,不幸的是,顯而易見的選擇不是我正在尋找。 –

+0

好的,謝謝你的澄清。所以當你說「即使在數據庫中沒有任何活動」時,你的意思是這些電子郵件需要定期發送(即每天一次)*即使沒有人使用Access應用程序*(即電子郵件過程應該是完全獨立於用戶與之交互的任何前端代碼)? –

回答

0

如果你的意思是你需要在一張表上執行一個查詢操作,那麼這個查詢將管理髮送一封關於每個違規行的電子郵件的執行 - 那麼我認爲你不會有太多運氣;

您可以通過訪問打開電子郵件窗口,但不會自行發送電子郵件。

你在後端使用什麼?如果它很靈活,並且你使用SQL服務器作爲後端,那麼你可以使用實際的觸發器來調用存儲過程來發送所需的電子郵件。

除此之外,所有我能想到就做,會

  • 創造出用於找出一個電子郵件被髮送行的查詢;
  • 創建一個.NET的可執行文件,接收的信息作爲參數設定&發送您所需要的數據的基礎上的電子郵件,
  • 應用程序中的表格上,使用計時器事件來週期性的執行邏輯打開該查詢使用類似於adodb.recordset的形式,並循環遍歷記錄集,併爲查詢返回的每一行調用.net可執行文件。

希望這有助於

+0

感謝您的回覆。我放棄了作爲後端訪問的想法,現在是MSSQL。問題 - 如何定義一個觸發器,一旦日期在表中的某個字段中的日期是今天或更少?謝謝! –

+0

@DisplayName請注意,我在答案中提供的解決方案與使用Access數據庫時的SQL Server數據庫一樣好。你真正需要做的就是改變[連接字符串](http://www.connectionstrings.com/sql-server/)。 –

1

在Microsoft Access 應用沒有任何內置功能來自動掃描數據庫和發送基於記錄表中的狀態電子郵件。但是,這並不意味着這樣的功能對存儲在Access數據庫中的信息「不可行」。實際上,實現這樣的功能可能如此簡單:

以下VBScript代碼可以每天早上作爲Windows下的計劃任務運行(通過cscript.exe)。它將掃描名爲[患者]的表格,並向每天有生日的每個人發送「生日快樂」消息。

Option Explicit 

Dim con ' As ADODB.Connection 
Dim rst ' As ADODB.Recordset 
Dim msg ' As CDO.Message 

Set con = CreateObject("ADODB.Connection") ' New ADODB.Connection 
con.Open _ 
     "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=C:\Users\Gord\Desktop\Database1.accdb;" 
Set rst = CreateObject("ADODB.Recordset") ' New ADODB.Recordset 
rst.Open _ 
     "SELECT FirstName, Email " & _ 
     "FROM Patients " & _ 
     "WHERE Month(DOB) = Month(Date()) " & _ 
      "AND Day(DOB) = Day(Date())", _ 
     con 
Do Until rst.EOF 
    Set msg = CreateObject("CDO.Message") ' New CDO.Message 
    msg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    msg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.example.com" 
    msg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
    msg.Configuration.Fields.Update 

    msg.To = rst("Email").Value 
    msg.From = "[email protected]" 
    msg.Subject = "Happy Birthday!" 
    msg.TextBody = "Hi, " & rst("FirstName").Value & ". We hope you have a great birthday today!" 
    msg.Send 

    Set msg = Nothing 
    rst.MoveNext 
Loop 
rst.Close 
Set rst = Nothing 
con.Close 
Set con = Nothing