我在Access 2010數據庫中有一個表,其中2列是datetime。訪問日期時間字段更新內容
我導入Excel文件後,我結束了
2點55分00秒
零時五十零分00秒 等
唯一的問題是數據應該看起來像
00:02:55
00:00:50 etc
我不能改變訪問文件中的字段,因爲另一個進程稍後依賴於此結構。
以Excel格式也不能改變和列是自定義 - [米]:SS
我想知道的是一個使用VBA來檢查字段,然後更新方式。也許轉換爲文本,然後操縱並轉換回來並更新。
我在Access 2010數據庫中有一個表,其中2列是datetime。訪問日期時間字段更新內容
我導入Excel文件後,我結束了
2點55分00秒
零時五十零分00秒 等
唯一的問題是數據應該看起來像
00:02:55
00:00:50 etc
我不能改變訪問文件中的字段,因爲另一個進程稍後依賴於此結構。
以Excel格式也不能改變和列是自定義 - [米]:SS
我想知道的是一個使用VBA來檢查字段,然後更新方式。也許轉換爲文本,然後操縱並轉換回來並更新。
很簡單的方法來更新:
Update YourTable
Set TimeField = TimeField/60
更好的方法是不再進口,但鏈接的Excel數據。然後使用鏈接表作爲查詢中的源,並根據需要轉換數據。
現在,使用此查詢進行進一步處理/導入。
對不起,我已經想出了這個,這似乎工作,不知道如果最好的方法或不。
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
這可能會奏效,但通常您應該更喜歡使用SQL-而不是Recordset-Operations,因爲它們更快。此外,記錄集編輯/添加具有鎖定記錄的缺點,如果您的記錄集很大,則可能違反了maxlocksperfile-limit。這可以通過在Openrecordset中使用dbOpenSnapShot(它使記錄集不可更新)並使用SQL-Updatequery對循環中的每個記錄執行更新來避免,但使用@Gustav divison(因爲時間/日期以數字形式存儲在數據庫中)不前後轉換。 – BitAccesser
謝謝知道會有更好的方法 – JPS
是的。日期/時間的字符串處理應該是最後一個選項。 – Gustav