Error Code 3061 Too Few Parameters
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of error 3061 too few parameters expected 2 this site About Us Learn more about Stack Overflow the company Business Learn
Run Time Error 3061 Too Few Parameters
more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question error 3061 too few parameters expected 1 x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up Why ms access run time error 3061 too few parameters Run-time error '3061'. Too few parameters. Expected 1? Access 2010 up vote 1 down vote favorite I have researched all the STACKOVERFLOW questions on this but cannot make it work. I have a simple table: And a form: I want to extract the fields from the table T:ActityRoster and the “Activity Date” from the form and “add” them to a table T:ActivityHistory. A
Run Time Error 3061 Too Few Parameters Expected 2
STACKOVERFLOW expert helped me with some code, but it won’t even set the first recordset:rsIn Dim ActID As Integer, actDate As Date, val1 As Long, val2 As Long, val3 As Boolean, val4 As Currency Dim db As Database, rsIn As Recordset, rsOut As Recordset Dim strSQL As String Set db = CurrentDb ActID = Me.cboActivityName.Column(0) strSQL = "SELECT * FROM T:ActivityRoster WHERE [ActivityID] = ActID" Debug.Print strSQL Set rsIn = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) rsIn.MoveLast Set rsOut = db.OpenRecordset("T:AttendanceHistory", dbOpenDynaset, dbEditAdd) rsOut.MoveLast actDate = Me.ActivityDate.Value ' retrive the date from the form With rsIn .MoveFirst Do val1 = !ActivityID val2 = !MemberID val3 = !Attended val4 = !AmtSpent With rsOut .AddNew !ActivityDate = actDate !ActivityID = val1 !MemberID = val2 !Attended = val3 !AmtSpent = val4 .Update End With .MoveNext Loop Until .EOF .Close End With rsOut.Close Set rsIn = Nothing Set rsOut = Nothing Set db = Nothing End Sub I have verified that all field names are correct and are consistent data types. When I put the query back into Access, it gives what is expected. ms-access access-vba ms-access-2010 share|improve this question edited Apr 21 '15 at 17
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site too few parameters. expected 1 access About Us Learn more about Stack Overflow the company Business Learn more about too few parameters. expected 1 openrecordset hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss
Too Few Parameters. Expected 1 Excel
Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up Access Run-time error http://stackoverflow.com/questions/29777371/why-run-time-error-3061-too-few-parameters-expected-1-access-2010 '3061': Too few parameters. Expected 1 up vote 1 down vote favorite I'm getting an Access Run-time error: '3061': Too few parameters. Expected 1 when trying to run some VBA code from a form with sub-report. I've tried with the variable (CurAssetID) as well as the direct link (Forms!Details!ID) in the SQL query but both result in the same error. I put in the MsgBox http://stackoverflow.com/questions/22184774/access-run-time-error-3061-too-few-parameters-expected-1 just to verify it was picking up the correct value which it is. If I replace the last part of the SQL query with a value (HAVING (((Assignments.AssetID)=1));") it works fine. What's going on here and how can I fix it? 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) sql vba ms-access share|improve this question edited Mar 5 '14 at 1:40 Yawar 3,9902136 asked Mar 4 '14 at 22:43 user3377449 8113 Your SQL can't see your VBA parameters. –ta.speot.is Mar 4 '14 at 22:48 add a comment| 1 Answer 1 active oldest votes up vote 0 down vote accepted You can create a string variable with the parameter value concatenated inside it: 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) ' ... As an additional pre
Ask a Question Need help? Post your question and get tips & solutions from a community of 418,507 IT Pros & Developers. It's quick & easy. in DAO: Run https://bytes.com/topic/access/answers/660221-dao-run-time-error-3061-too-few-parameters time error 3061 Too few parameters.... P: n/a Richard Hollenbeck I wonder what I'm missing? I really feel like a retard because I've been screwing with some code for a very long time. I just must be missing something very simple. In the following example, I've stripped away everything that doesn't cause the error to make my question a little simpler. Here's the problem in its simplest form too few inside a report: Dim db As DAO.Database Dim rs As DAO.RecordSet Set db = CurrentDb Set rs = db.OpenRecordset("SELECT * FROM qryTableOfGrades") 'where qryTableOfGrades is a saved crosstab query. I get "Run time error 3061 Too few parameters. Expected 0." but if I just make that last line: Set rs = db.OpenRecordset("qryTableOfGrades") I get "Run time error 3061 Too few parameters. Expected 1." And if I do this: Set too few parameters rs = db.OpenRecordset(qryTableOfGrades) ' without quotes I get "variable not defined." If I run the query by itself without the report it runs fine. Jun 10 '07 #1 Post Reply Share this Question 1 Reply P: n/a Allen Browne There is a name in qryTableOfGrades that Access cannot resolve to a field name, so it interprets it as a parameter. The parameter could be several things, e.g.: a) Something like this: [Forms].[Form1].[Text22] When you run the query, the Expression Service handles that reference. But the ES is not available in DAO code, so it is treated as an unsupplied parameter. b) A misspelled field name. c) A field name in the Filter or Order By properties of the query, if the field no longer exists. You should be able to identify what the parameter is by closing all forms, running the query, and seeing what name it asks for. It is possible to supply the parameter programmatically, e.g.: Dim qdf As DAO.QueryDef Set qdf = dbEngine(0)(0).QueryDef("qryTableOfGrades") qdf.Parameters("[Forms].[Form1].[Text22]") = [Forms].[Form1].[Text22] Set rs = qdf.OpenRecordset(... -- Allen Browne - Microsoft MVP. Perth, Western Australia Tips for Access users - http://allenbrowne.com/tips.html Reply to group, rather than allenbrowne at mvps dot org. "Richard Hollenbeck"