2014-03-04 4 views
1

를 예상 내가 액세스 런타임 오류 받고 있어요 :액세스 런타임 오류 '3061': 매개 변수가 너무 적습니다. 1

'3061': Too few parameters. Expected 1

하위 보고서와 양식에서 일부 VBA 코드를 실행하려고합니다.

SQL 쿼리에서 변수 (CurAssetID)와 직접 연결 (Forms!Details!ID)을 사용해 보았지만 같은 오류가 발생합니다. MsgBox에 올바른 값을 입력했는지 확인하기 위해 넣었습니다.

SQL 쿼리의 마지막 부분을 값 (HAVING (((Assignments.AssetID)=1));")으로 바꾸면 올바르게 작동합니다. 여기서 무슨 일이 일어나고 어떻게 해결할 수 있습니까? Forms!Details!ID 숫자 (Integer 또는 Long)를해야되는 거지 경우 I는 추가적인 조치로

curAssetID = Forms!Details!ID 
status = MsgBox(CurAssetID, vbOKOnly) 
Dim lastAssignment As DAO.Recordset 
lastAssignmentSQL = "SELECT Assignments.AssetID, " & _ 
        "Last(Assignments.LocationID) AS LastLocationID " & _ 
        "FROM Assignments " & _ 
        "GROUP BY Assignments.AssetID " & _ 
        "HAVING (((Assignments.AssetID)=" & CurAssetID & "));" 
Set lastAssignment = CurrentDb.OpenRecordset(lastAssignmentSQL, dbOpenDynaset, dbSeeChanges) 
' ... 

:

Private Sub LineSelect_Click() 
CurAssetID = Forms!Details!ID 
Status = MsgBox(CurAssetID, vbOKOnly) 
Dim LastAssignment As DAO.Recordset 
LastAssignmentSQL = "SELECT Assignments.AssetID, Last(Assignments.LocationID) AS LastLocationID FROM Assignments GROUP BY Assignments.AssetID HAVING (((Assignments.AssetID)=CurAssetID));" 
Set LastAssignment = CurrentDb.OpenRecordset(LastAssignmentSQL, dbOpenDynaset, dbSeeChanges) 
+0

SQL에서 VBA 매개 변수를 볼 수 없습니다. –

답변

0

넌 안에 연결된 파라미터 값 문자열 변수를 생성 할 변수 CurAssetID을 명시 적으로 선언하는 것이 좋습니다.

Dim curAssetID as Integer ' Or Long 
curAssetID = Forms!Details!ID 
Dim lastAssignment As DAO.Recordset 
lastAssignmentSQL = "SELECT Assignments.AssetID, " & _ 
        "Last(Assignments.LocationID) AS LastLocationID " & _ 
        "FROM Assignments " & _ 
        "GROUP BY Assignments.AssetID " & _ 
        "HAVING (((Assignments.AssetID)=" & CurAssetID & "));" 
Set lastAssignment = CurrentDb.OpenRecordset(lastAssignmentSQL, dbOpenDynaset, dbSeeChanges) 
' ... 

값이 '문자열'인 경우 쿼리에 값을 따옴표로 묶어야합니다.

Dim curAssetID as String 
' ... 
lastAssignmentSQL = "SELECT Assignments.AssetID, " & _ 
        "Last(Assignments.LocationID) AS LastLocationID " & _ 
        "FROM Assignments " & _ 
        "GROUP BY Assignments.AssetID " & _ 
        "HAVING (((Assignments.AssetID)= '" & CurAssetID & "'));" 
' ... 
+0

괜찮 았는데 도와 줘서 고마워! – user3377449

관련 문제