2010-03-10 127 views
3

國家的問題:如何使用Word VBA中使用Access-VBA定義的函數的Access查詢?

我不再認爲這是相關的是,我引用的Excel或查詢有參數。我認爲問題歸結爲:我如何使用Word VBA中使用Access-VBA定義的函數的Access查詢?

我想要做什麼is impossible,如何使內聯版本的Acos函數與我的查詢一起工作,按照shahkalpesh's answer


我在訪問VBA函數:

Public Function Acos(radians As Double) As Double 
    Acos = WorksheetFunction.Acos(radians) 
End Function 

WorksheetFunction從引用的Excel(這是我做的,只是因爲它定義了ACOS函數)來了。

我在具有三個參數的查詢中使用此函數。然後我在Word VBA中運行此查詢,如下所示:

Dim command As New ADODB.command 
With command 
    .ActiveConnection = connection 
    .CommandText = "MyQueryName" 
    .CommandType = adCmdStoredProc 
    .Parameters.Append .CreateParameter(_ 
     "Param1", adDouble, adParamInput, , param1Value) 
    .Parameters.Append .CreateParameter(_ 
     "Param2", adDouble, adParamInput, , param2Value) 
    .Parameters.Append .CreateParameter(_ 
     "Param3", adDouble, adParamInput, , param3Value) 
End With 

Dim records As New ADODB.Recordset 
records.Open command, , adOpenKeyset, adLockOptimistic 

我在Word VBA中得到一個函數Acos未定義的錯誤。

想法?

UPDATE

在迴應評論:是的,查詢工作完美地訪問。

而且,只是一張紙條,這是所有Office 2007

更新2

我們從去訪問到Word,因爲VBA程序已在Word中,但需要做一些數據的運算這在VBA中並不實際。

更改爲創建Excel應用程序對象除了顯着減慢查詢速度之外沒有任何影響。

更新3

我在Word和訪問引用到Excel。 (如果有更好的方法來得到一個ACOS功能,我當然願意接受它。)

+1

您是否能夠在沒有任何錯誤的情況下在Access中運行Access查詢(使用Acos)? – shahkalpesh 2010-03-10 13:35:47

+0

是的。查看更新的問題。 – 2010-03-10 13:44:55

+0

我會期望設置xl = CreateObject(「Excel.Application」) Acos = xl.WorksheetFunction.Acos(0.1) 請注意,如果您輸入的弧度值錯誤,則會出現錯誤。 – Fionnuala 2010-03-10 13:55:05

回答

1

而是使用Excel來獲得ACos結果,試試這個

其中X =字段,它包含的值將被傳遞到Acos

SELECT X, IIF(X = 1, 0, Atn(-X/Sqr(-X * X + 1)) + 2 * Atn(1)) 
FROM myTable; 

這裏是page,我提到爲ACos式。

嘗試&保存上述查詢。
訪問其他功能,如AtnSqr它可以幫助你得到ACos需要什麼。因此,你不需要問Excel來爲你計算東西。

注意:您必須對ACos不支持的值進行錯誤處理。
例如=ACOS(1.25)給你#NUM!(非數字)

以類似的方式,如果上述查詢的參數是1.25,它將返回一個錯誤。
因此,要小心並驗證輸入以確保查詢不會崩潰。

+0

這適用於替換Acos函數,但它仍然不會讓我從VBA運行查詢。我會嘗試內聯這個,但是我運行Acos的X是一個非常複雜的表達式,所以它會變得非常混亂。 – 2010-03-10 15:07:14

+0

實際上,我在給Acos的調用中的表達時間太長了Access不會讓我內聯這個函數... – 2010-03-10 15:12:32

+0

有沒有辦法,可以將X值轉儲到中間表的字段Y中,並將字段Y用作這個表達式的參數? – shahkalpesh 2010-03-10 15:34:35

相關問題