나는 만들고있는 VBA 스크립트에 몇 가지 문제가있어 여기서 물어 보는 것이 가장 좋을 것이라고 생각했습니다. 나는 약간 배경을 줄 것이다 :런타임 오류 3065 VBA SQL 문에서 "select query를 실행할 수 없습니다"
나는 나의 클라이언트의 많은 것이 나의 국가 세무서에서 일정한 발행 한 문서에 대하여 가고 손에서 현금을 지불하고, 저에 세금의 양을 산출하게 얻는 때 나는이 프로그램을 쓰고있다. 특정 금액. 수동으로 처리하는 것이 합당한 서류 작업이므로이 작업을 수행하는 애플리케이션과 상당한 금액을 더 쓰고 있습니다. 아래 스크립트는 수행해야 할 작업의 핵심입니다.
처음 사용하는 경우 Access에서 일회용 양식을 만들었습니다. 아무것도 쓰지 않았습니다. 임시 계산 용이며 프린터로 전송되어 휴일 수당을 계산합니다.
계산 된 셀에서 SQL 조회를 수행 할 수 없기 때문에 입력 된 3 개의 값을 인수로 전달하여 VBA 스크립트를 실행하고 있습니다.
그러나 런타임 오류 3075를 없애지 못하는 것 같아요. 내 인생에서 내가 어디에서 왔는지 알아낼 수 없습니다. SQL 문까지 추적했지만 연산자 오류가있는 위치를 찾을 수 없습니다. 내가 어디로 잘못 가고 있니? 내가 그들을 답변을 주위에있을 것입니다 추가 질문이 있으면 물론
Option Compare Database
Public Function DetermineTax(CurrentDate As Date, CurrWageType As String, CalcNetWages As Currency)
'Checks whether required fields are blank
If Not (IsDate(CurrentDate)) Then
Exit Function
End If
If (CurrWageType = "") Then
Exit Function
End If
If (CalcNetWages <= CCur(0#)) Then
Exit Function
End If
Dim strSQL As String
'Calculates tax based on (-((n-b)/(a-1))-n) formula, where all WHERE arguments have been met.
strSQL =
"SELECT FIRST (ROUND(((-(CalcNetWages-tblWageRate.CoefficientB)/(tblWageRate.CoefficientA-1))-CalcNetWages))) " & _
"FROM tblWageType INNER JOIN tblWageRate " & _
"ON tblWageType.WageTypeID = tblWageRate.fk_WageTypeID " & _
"WHERE tblWageRate.TaxYearStart <= CurrentDate And " & _
"tblWageRate.TaxYearEnd >= CurrentDate And " & _
"tblWageType.WageType = CurrWageType And " & _
"tblWageRate.Net >= CalcNetWages;"
CurrentDb.Execute Query:=strSQL, Options:=dbFailOnError + dbSeeChanges
'DoCmd.RunSQL strSQL
End Function
: 여기
는 코드입니다.감사합니다.
편집 : Urgh,이 코드를 너무 오랫동안보고 있습니다. ROUND 함수는 대괄호로 묶어야했습니다. 그 오류 3075 없애 버렸어. 위의 코드를 수정했습니다.
그러나 이제 오류 3065 "선택 쿼리를 실행할 수 없습니다."가 나타납니다. 일부 인터넷 검색을 사용하면 양식에서 SELECT 필드를 사용할 수없는 것 같지만 모듈로 호출 할 때 차이가 있어야한다고 생각하지 않습니다. 나는 잠자리에 들기 위해 내일 더 시도 할 것이다. 그러나 그 사이에 누군가는 어떤 생각을 가지고 있니?
? 나는이 연산자를 보지 못했을 것입니다. 아마도 "SELECT TOP 1 ..."을 의미했을 것입니다. – Arvo
SELECT FIRST는 반환 된 첫 번째 결과를 선택해야합니다. tblWageRate.Net이 CalcNetWages보다 큰 하나 이상의 결과가 거의 확실하기 때문에 정확한 계수를 반환하기 위해 첫 번째 것을 선택해야합니다. 방금 SELECT TOP 1을 시도했는데 오류가 2342로 바뀌 었습니다 (RunSQL 작업에 SQL 문으로 구성된 인수가 필요함) –
CurrentDate, CurrWageType 또는 CalcNetWages를 실제로 바꾸지 않았습니다. 그것들은 SQL 쿼리와 일치하는 것을 얻기 위해 전달되어야하는 사용자 입력 변수입니다. 결과는 텍스트 상자에 쓰여지 겠지만이 코드를 여러 가지 다른 형식으로 사용하려면 실제로 올바른 값을 먼저 반환해야합니다. –