2010-05-13 23 views
1

我有一個帶有日期/時間字段的Access表。我想在日期/時間字段和其他3個文本字段中使用與另一個數據庫中匹配的Key字段相同格式的複合Key字段。使用UDF查詢在Access中工作,但在Excel中爲表達式(錯誤3085)提供未定義的函數

因此,我連接了3個文本字段,並在模塊中寫入了用戶定義函數,以格式爲「YYYYMMDD」的字符串形式輸出日期字段。

Public Function YYYYMMDD(dteDate As Date) As String 
    YYYYMMDD = Format(dteDate, "YYYYMMDD") 
End Function 

我可以成功地在Access中運行我的查詢,它一切正常。

但是,當我設置在Excel中一些DAO代碼,並試圖運行工作訪問內精細查詢...

db.Execute "qryMake_tblValsDailyAccount" 

... Excel中爲我提供了表達的「未定義功能。(錯誤3085)「錯誤。

對我來說這是Excel和/或訪問一個錯誤,因爲(Excel)中的客戶端不應該需要知道在隔離時,通常在(訪問)服務器發生完全的內部計算任何東西。

Excel應該將querydef(名稱不帶參數)發送到服務器,讓服務器完成其工作,然後收到答案。爲什麼需要涉及服務器內部的功能?

有沒有人知道解決這個問題的方法?

+0

什麼讓你覺得你需要一個「複合鍵字段」?也就是說,你期望這個派生數據有什麼用途? – 2010-05-14 20:13:11

回答

1

好吧,我用的是通過它的主鍵ValsDaily_ID

SELECT tblValsDaily.ValsDaily_ID, 
Format(Year(tblValsDaily.BusinessDate))+ 
Format(Month(tblValsDaily.BusinessDate),"00")+ 
Format(Day(tblValsDaily.BusinessDate),"00") AS YYYYMMDD 
FROM tblValsDaily; 

加入到原始數據表,但是這是真的跛腳查詢替換VBA函數砍死修復它,我仍然不知道爲什麼VBA版本不工作...

3

Access使用Jet和訪問的組合和Jet理解VBA功能。 DAO是不瞭解VBA功能的通用數據訪問層。

當您使用DAO時,您不會自動化Access,只是使用該橋來獲取數據。

即使訪問使用DAO的一些版本在內部與噴氣溝通,瞭解VBA的能力編程到訪問,而不是DAO。

我認爲你的解決方法是你能做的最好的。

相關問題