2015-10-19 3 views
1

Выбор запроса работает отлично (доступ к 2013 году). Как только я меняю его на кросс-таблицу, это дает мне ошибку «несоответствие типов данных в выражении критериев». Я использую функцию vba в значении кросс-таблицы как выражение. У меня нет нулевых значений в моей таблице, и я попытался использовать вариант в качестве моего типа данных.Доступ к Crosstab Несоответствие типа данных в выражении критериев

VBA

enter code here 
'assumes that the rate is monthly 
Public Function payFrequency(frequency As String, rate As Currency) As Currency 
If frequency = "BI-WEEKLY" Then 
    payFrequency = rate * 12/26 
    Exit Function 
ElseIf frequency = "SEMI-MONTHLY" Then 
    payFrequency = rate * 12/24 
    Exit Function 
ElseIf frequency = "MONTHLY" Then 
    payFrequency = rate 
    Exit Function 
Else 
    payFrequency = 0 
    Exit Function 
End If 
End Function 

и SQL

TRANSFORM 
    payfrequency([structurepayrollFrequency], 
    Max([2015_PREMIUM]-[2015_EMPLOYER_CONTR])) AS 2015_EMPLOYEE_CONTR 
+0

Интересно, что произойдет, если вместо VBA вы создадите эту функцию в запросе. Это было бы моим предпочтительным решением в любом случае; Вызовы VBA из запроса часто неэффективны, и сложнее справиться с проблемой. – Smandoli

+0

Это сработало! Спасибо, Скандоли. – zachary

ответ

0

Вместо VBA, я предлагаю вам построить эту функцию в запросе. Это было бы моим предпочтительным решением в любом случае; Вызовы VBA из запроса часто неэффективны, и сложнее справиться с проблемой.