2017-07-01 47 views
0

我在Access 2010數據庫中有一個表,其中2列是datetime。訪問日期時間字段更新內容

我導入Excel文件後,我結束了

2點55分00秒

零時五十零分00秒 等

唯一的問題是數據應該看起來像

00:02:55

00:00:50 etc

我不能改變訪問文件中的字段,因爲另一個進程稍後依賴於此結構。

以Excel格式也不能改變和列是自定義 - [米]:SS

我想知道的是一個使用VBA來檢查字段,然後更新方式。也許轉換爲文本,然後操縱並轉換回來並更新。

回答

1

很簡單的方法來更新:

Update YourTable 
Set TimeField = TimeField/60 

更好的方法是不再進口,但鏈接的Excel數據。然後使用鏈接表作爲查詢中的源,並根據需要轉換數據。

現在,使用此查詢進行進一步處理/導入。

+0

謝謝知道會有更好的方法 – JPS

+0

是的。日期/時間的字符串處理應該是最後一個選項。 – Gustav

0

對不起,我已經想出了這個,這似乎工作,不知道如果最好的方法或不。

Sub FixTime() 

Dim rs As Recordset 

Set rs = CurrentDb.OpenRecordset("Table1") 
rs.MoveFirst 
Do While Not rs.EOF 
    If Not IsNull(rs!test) Then 
    a = CStr(rs!test) 
    b = "00:" & Mid(a, 1, 5) 
    c = CDate(b) 
    rs.Edit 
    rs!test = c 
    rs.Update 
    End If 
    rs.MoveNext 
Loop 
rs.Close 

End Sub 
+0

這可能會奏效,但通常您應該更喜歡使用SQL-而不是Recordset-Operations,因爲它們更快。此外,記錄集編輯/添加具有鎖定記錄的缺點,如果您的記錄集很大,則可能違反了maxlocksperfile-limit。這可以通過在Openrecordset中使用dbOpenSnapShot(它使記錄集不可更新)並使用SQL-Updatequery對循環中的每個記錄執行更新來避免,但使用@Gustav divison(因爲時間/日期以數字形式存儲在數據庫中)不前後轉換。 – BitAccesser