2009-12-16 57 views
0

局勢:通過VBA從Outlook訪問Access數據庫

在Outlook中,我從服務器收到消息。 消息的內容需要放入Access數據庫。但是, 可能不存在具有相同日期的另一條消息。所以,我需要 看看數據庫,如果已經有一個消息具有相同的日期和 時間。如果存在一個,那麼它需要被替換,否則需要將該消息添加到數據庫中。數據庫包含道路上車輛當前位置的列表 。

問題:

我有問題,日期時間,在通過VBA的Access數據庫 日期時間進行比較。我使用的查詢不返回任何記錄,但數據庫中存在 的記錄。

這是我使用的查詢:

adoRS.Open "SELECT * FROM currentpositions WHERE ((currentpositions. 
    [dateLT])=" & "#" & date_from_message & "#" & ")", adoConn, adOpenStatic, adLockOptimistic 

其次,我現在需要的結果是,查詢的內容。

如何確定我的查詢給我的記錄數?

感謝 camastanta

回答

0

如果從消息的日期是一個日期,請嘗試:

"SELECT * FROM currentpositions WHERE ((currentpositions. 
[dateLT])=#" & Format(date_from_message,"yyyy/mm/dd") & "#)" 

也就是說,格式化日期的年,月,日的順序。

請問date_from_message有附加時間嗎? dateLT有時間嗎?如果是這樣,如果只有日期相關,最好排除時間。

你可以從RecordCount屬性返回的記錄數,但你需要使用the right cursor type

adOpenKeyset:1
ADOPENSTATIC:3

我注意到你正在使用ADOPENSTATIC,所以:

adoRS.Recordcount 

應該適合。

+0

是不是在這種情況下,正確的遊標類型adOpenDynamic? 「如果使用ADO創建基於SQL字符串的記錄集,請儘可能指定adOpenDynamic CursorType值,因爲Jet不支持動態遊標......,Jet專門處理這個問題,使用SQL字符串提供最佳性能。 ,使用支持Jet無法處理的特定遊標類型的常量以獲得SQL字符串的最佳性能,但這是特定常量在內部映射的方式。「 (http://msdn.microsoft.com/en-us/library/aa188211(office.10).aspx) – onedaywhen 2009-12-16 13:37:20

0

感謝您的意見:格式正在工作,但我仍然有問題的時間。我需要比較一個日期/時間。

我使用message-body中的日期/時間將它與訪問數據庫中的日期/時間進行比較。如果那時有記錄,那麼我不得不做任何事情,否則我需要將消息體添加到數據庫中。

事實上,我使用更多的字段來確定記錄是否存在,但我只有日期/時間字段的問題。 郵件正文如下:10125,Road Runner,2009年16月12日18:28:00,(16/12/2009 17:28:00 UTC),11,51.32400000,3。20000000,位置報告(包含字段:DB-號碼,姓名,日期的地方,UTC日期,狀態,位置,其他)

問候 Camastanta