VBA를 사용하여 Excel에서 저장된 MS 액세스 쿼리를 실행하려고합니다. ADODB를 사용하여이 작업을 수행하기위한 제네릭 함수를 만들었습니다. 매개 변수의 유무에 관계없이 결과를 얻을 수 있습니다.VBA 모듈을 사용하는 액세스 저장 쿼리에서 오류가 발생했습니다.
그러나 액세스 vba 모듈을 참조하는 저장된 쿼리를 실행하려고하면 barfs가 런타임 오류 "정의되지 않은 함수 MissCat"(저장된 쿼리가 사용하는 사용자 지정 함수의 이름)을 능가합니다.
나는이 함수가 함수의 정의를 알고 있기 때문에 작동 할 것으로 예상 했었지만 지금은 ADODB 인터페이스가 작성한 VBA 모듈의 도움없이 저장된 쿼리에서 SQL을 interperet하려고 시도하고 있다는 느낌이 들었다. 액세스.
대부분의 사용자가 컴퓨터에 액세스 할 수있는 권한이 없기 때문에이 농구대를 뛰어 넘고 있습니다.
저장된 쿼리를 그대로 사용할 수 있습니까 (쿼리 인터페이스를 변경하는 등)? 또는 사용자 정의 함수가 필요하지 않도록 쿼리를 변경하는 최소 저항의 경로입니다 (아래에서 볼 수 있듯이 매우 간단합니다. SQL을 잘 모르기 때문에 버팀목으로 사용했습니다)
여기함수
Function MissCat(ProShip As Date, TargetDate As Date) As String
If TargetDate >= ProShip Then
MissCat = "Meets target"
Exit Function
End If
If TargetDate < Date Then
MissCat = "Unrecoverable"
Exit Function
End If
Select Case ProShip - TargetDate
Case 1 To 6
MissCat = "Less than one week"
Case 7 To 14
MissCat = "1-2 Weeks"
Case Else
MissCat = "Greater than 2 Weeks"
End Select
End Function
이며, 여기에 SQL을 것입니다 감사
TRANSFORM Count(Shipset.ID) AS CountOfID
SELECT Calendar.[Week Of]
FROM Calendar INNER JOIN Shipset ON Calendar.DateSerial = Shipset.ShipDate
WHERE (((Calendar.[Week Of])>Date()-(13*7)) AND ((Shipset.ShipDate) Is Not Null) AND ((Shipset.ReqOut)=False) AND ((Shipset.TwoTier)=False))
GROUP BY Calendar.[Week Of]
ORDER BY IIf(MissCat([Shipset]![ShipDate],[Shipset]![TargetDate])="Meets Target","Meets Target","Hit") DESC
PIVOT IIf(MissCat([Shipset]![ShipDate],[Shipset]![TargetDate])="Meets Target","Meets Target","Hit");
,
엑셀에서 ADO를 사용할 때 액세스 (응용 프로그램)가 사용되지 않고 있습니다 : Access VBA 코드를 볼 수없는 Jet 드라이버를 사용합니다. –