2011-08-19 48 views
1

我有一個問題轉換日期,同時在訪問中VB更新SQL表:這裏是我的代碼:轉換日期格式的訪問表和SQL更新

'Excel format date conversion 
strSQL = "UPDATE tblBlotterINTLControl " & _ 
      "SET tblBlotterINTLControl.TradeDate = CVDate(TradeDate), " & _ 
       "tblBlotterINTLControl.SettleDate = CVDate(SettleDate);" 
DoCmd.RunSQL strSQL 

我得到各行的錯誤:「類型轉換錯誤「 雖然我的表格格式正確,請幫助謝謝

編輯: 我不得不說,一個SELECT請求可以工作,但一個UPDATE請求不會!爲什麼?怎麼樣?

+1

什麼樣的數據類型是列? – Jacob

+0

表中的數據類型是Excel日期格式,它可以是19 Aug。或8/19甚至40710 – prince

+0

不是列中的數據,而是列DATATYPE。像VARCHAR,LONG等。另外,如果您可以發佈查詢失敗的特定數據,那將是非常好的。 – Jacob

回答

0

Access Table tblBlotterINTLControl中的TradeDate和SettleDate字段的數據類型是什麼?

SELECT TypeName(TradeDate) AS TypeOfTradeDate, TypeName(SettleDate) AS TypeOfSettleDate 
FROM tblBlotterINTLControl; 

請將該查詢粘貼到Access中的新查詢的SQL視圖中,運行它並向我們展示您返回的內容。

我問的原因是因爲UPDATE查詢中的SET語句讓我困惑。

SET tblBlotterINTLControl.TradeDate = CVDate(TradeDate) 

如果TradeDate字段是日期/時間數據類型,則對其使用CVDate()函數不會完成任何操作。

如果TradeDate字段是文本數據類型,則CVDate()會爲您提供變體日期,但不能將該日期/時間值存儲回您的文本字段。

也許你會更好使用Format()函數。這裏是我從立即窗口複製的示例:

? Format("2011/01/01", "d mmm yyyy") 
1 Jan 2011 
0

嘗試CDate而不是CVDate

CVDate實際上會返回一個類型爲vbDate的Variant類型,僅用於向後比較。也許這就是導致問題的原因。