Hello Access friends, What is wrong with the following code (modified the module from http://members.iinet.net.au/~allenbrowne/AppInventory.html ): I Keep getting a runtime error 3061 Too few parameters . Expected 1 on the line highlight below. I have the reference MS DAO 3.6 selected and I am using access 2000 and calling the module from a command button in a form. Thanks in advance for taking the time to help me out.
Dim db As DAO.Database 'CurrentDb() Dim rs As DAO.Recordset 'Various recordsets. Dim strProduct As String 'vProductID as a string. Dim strAsOf As String 'vAsOfDate as a string. Dim strSTDateLast As String 'Last Stock Take Date as a string. Dim strDateClause As String 'Date clause to use in SQL statement. Dim strSQL As String 'SQL statement. Dim lngQtyLast As Long 'Quantity at last transaction. Dim lngQtyAcq As Long 'Quantity acquired since incoming transaction. Dim lngQtyUsed As Long 'Quantity used since outgoing transaction.
If Not IsNull(vProductID) Then 'Initialize: Validate and convert parameters. Set db = CurrentDb() strProduct = vProductID If IsDate(vAsOfDate) Then strAsOf = "#" & Format$(vAsOfDate, "mm/dd/yyyy") & "#" End If
'Get the last transaction date and quantity for this product. If Len(strAsOf) > 0 Then strDateClause = " AND ([TransacDate] <= " & strAsOf & ")" End If strSQL = "SELECT TOP 1 [TransacDate], [Quantity] FROM [Transactions] " & _ "WHERE ((ProductID = " & strProduct & ")" & strDateClause & _ ") ORDER BY TransacDate DESC;"
Set rs = db.OpenRecordset(strSQL) With rs If .RecordCount > 0 Then strSTDateLast = "#" & Format$(![TransacDate], "mm/dd/yyyy") & "#" lngQtyLast = Nz(!Quantity, 0) End If End With rs.Close
'Build the Date clause If Len(strSTDateLast) > 0 Then If Len(strAsOf) > 0 Then strDateClause = " Between " & strSTDateLast & " And " & strAsOf Else strDateClause = " >= " & strSTDateLast End If Else If Len(strAsOf) > 0 Then strDateClause = " <= " & strAsOf Else strDateClause = vbNullString End If End If
'Get the quantity acquired since then. strSQL = "SELECT Sum([Transactions].[Quantity]) AS QuantityAcq " & _ "FROM [Transactions]" & _ "WHERE (([Transactions].[ProductID] = " & strProduct & ") AND ([Transactions].[TransacType] = 'Incoming')" If Len(strDateClause) = 0 Then strSQL = strSQL & ");" Else strSQL = strSQL & " AND ([Transactions].[TransacDate] " & strDateClause & "));" End If
Set rs = db.OpenRecordset(strSQL) If rs.RecordCount > 0 Then lngQtyAcq = Nz(rs!QuantityAcq, 0) End If rs.Close
'Get the quantity used since then. strSQL = "SELECT Sum([Transactions].[Quantity]) AS QuantityUsed " & _ "FROM [Transactions]" & _ "WHERE (([Transactions].[ProductID] = " & strProduct & ") AND ([Transactions].[TransacType] = 'Outgoing')" If Len(strDateClause) = 0 Then strSQL = strSQL & ");" Else strSQL = strSQL & " AND ([Transactions].[TransacDate] " & strDateClause & "));" End If
Set rs = db.OpenRecordset(strSQL) If rs.RecordCount > 0 Then lngQtyUsed = Nz(rs!QuantityUsed, 0) End If rs.Close
'Assign the return value OnHand = lngQtyLast + lngQtyAcq - lngQtyUsed End If
Set rs = Nothing Set db = Nothing Exit Function End Function
Not sure how to work in the '* ROLL *' into this SQL statement. The query statement works fine ... I have tried different quotation methods ( Not Like " & " ' * ROLL * & ' " & " ) AND .... )
sql = "SELECT DISTINCTROW Sum(CDbl([Scrap Factor])) AS SumOFScrap FROM [RT: Signpro1: Costs] LEFT JOIN [DT: InventoryExtend] ON [RT: Signpro1: Costs].[Part Number] = [DT: InventoryExtend].[Part#] GROUP BY [DT: InventoryExtend].CategoryID, [DT: InventoryExtend].Description, [forms]![signpro sign estima parameters]![combo14] HAVING ((([DT: InventoryExtend].CategoryID)=30) AND (([DT: InventoryExtend].Description) Not Like '* ROLL *') AND (([forms]![signpro sign estima parameters]![combo14])=1));"
I have a library function that will allow the user to nominate a query (as one of its arguments) in the calling application which must have an email field. The function will then Do Loop the email field, concatenating it before creating an email and addressing it. The intended functionality is that a developer can easily create a group email, just by creating a query.
This works fine if the query is filtered "statically" - i.e. I specify which group of people by typing in their "Site_ID" in the criteria. However I want developers to be able to creating dynamically filtered queries (perhaps by the group's ID on a calling form). Within the query (to test it), the filter is therefore [Forms]![Test Function Calls]![Site_id]. When I run the code, I am then presented with "Run-time error 3061: Too few parameters. Expected 1". The code in question is:
Dim rst As DAO.Recordset Dim stTo As String 'one of the function's arguments received from the calling function. Dim stToString As String 'the built up concatenated emails
Set rst = CurrentDb.OpenRecordset(stTo, dbOpenDynaset, dbSeeChanges)
Using Access XP, I have a number of unbound combo boxes I use as search tools to locate specific records. Here is the code for one of them:
Private Sub Combo40_AfterUpdate() Me.JobNumber.SetFocus If Not IsNull(Me.Combo40) Then DoCmd.FindRecord Me.Combo40 End If End Sub
I think I need to add something along the lines of:
Me.Combo40.SetFocus Me.Combo40.Text = ""
To get it to clear the combo box after the FindRecord has executed. However, when I drop those 2 lines in either before or after the "End If", I get this:
"RunTime Error: 2115. The Macro or Function set to the BeforeUpdate Validation rule property for this field is preventing MS Access from saving the data in the field."
So, I hope this doesn't mean that you can't clear the combo box choice because it interferes with the FindRecord part of the code...Anyone know how to get the result I'm looking for? To define it clearly: I want the combo box selection area to clear the choice after the find record has succesfully completed. I don't want to clear the choices, just not show anything after a search completes.
Thanks in advance. I'm sure this one isn't that hard, but it is eluding me and I've only been doing access for about 3 months.
I'm having trouble with my database (Access 2000). I'm trying to export a file into a text file by clicking on a button. Below is the code. Where the code is in bold that is when the runtime error happens.
If i export the code manually by right click on the query > Export then this works, but for some reason by clicking on the button will not work.
Private Sub cmdExport_Click() Dim sExportFilePath As String sExportFilePath = DLookup("[DateExportLocation]", "tblSettings", "[ID]=1") ' Path if file to be exported DoCmd.OpenQuery "qryUpDateTransmissionDateAndTime", acViewNormal, acEdit ' Update dates time DoCmd.TransferText acExportDelim, "ExportFile", "qryExportFile", sExportFilePath End Sub
I create a front end and back end that resides on the lan. Front has everything besides the table which resides on the back end. Front ends table are linked to the backend. I have two computer that i am testing it on. Both of them runs Access 2003 runtime and windows has been update to the latest version, both xp machine aswell.Both has user right to read and write to that directory on the lan. Ldr exist when either of them uses access file. The strange thing is when i run a command to copy some data from one table to another one. one of the machine give me the following error "3027 Cannot Update. database or object is read only". While on the other machine it runs flawless. Another weird thing is if i modified some values in table by using forms it works great on both so i am a bit clueless where the problems is. its seems my problem is copying from one table to another. i dont have problem modyfing one table. Here is the code i use to that halt my ms access database.
Dim dbs As Database, rsProposal As Recordset, TES As String, stdocname As String, stLinkCriteria As String
TES = Me![TESID]
If TES = DLookup("TESID", "Proposals", "TESID =" & "'" & TES & "'") Then MsgBox "Proposal Already Exists for TES ID: " & vbCrLf & _ " " & TES, vbOKOnly, "Proposal Already Exists" GoTo Image264_Click_Exit Else If MsgBox("Do You Really Want to Create" & vbCrLf & "a New Proposal for TES ID " & vbCrLf & " " & TES & " ?", 289, "Create New Proposal?") = vbOK Then Set dbs = CurrentDb Set rsProposal = dbs.OpenRecordset("Proposals") With rsProposal .AddNew ![Long_Desc] = Me![Description] ![Short_Desc] = Me![Opportunity] ![Dest_Site] = Me![Install Site] ![TESID] = Me![TESID] ![End_User] = Me![Contractor/Purchaser Name] ![Date_Due] = Me![Proposal Due Date] ![Date_Completed] = Me![Close Date] ![Status] = Me![Status] .Update .Close Set rsProposal = Nothing dbs.Close Set dbs = Nothing End With stLinkCriteria = "[TESID] = " & "'" & TES & "'" stdocname = "Form Prop - Detail" DoCmd.OpenForm stdocname, , , stLinkCriteria DoCmd.Close acForm, "Form TES - Detail" End If End If
I am trying to open a recordset object using a reasonably complex query. The query uses other queries to get data and some of these queries are totaliser queries (I dont know the proper terminology but they are the ones that group and sum up data in the query).
Dim D As Database, R As Recordset, R2 As DAO.Recordset Set D = DBEngine.Workspaces(0).Databases(0) Set R2 = D.OpenRecordset("Qry Daily Losses", dbOpenSnapshot)
The error Message I get is:
Run-time error "3061" Too few parameters. Expected 4.
Most of the information I have seen on this error message talks about 1 parameter expected not 4.
I can open the query directly by clicking on it in the objects list and it looks fine. It is only when I try to open it in my code that it goes wrong.
I have a error I need help with. Here is my code for my Global, and My Form Current: See the red for the Error Line, that show up in the VBE and the Blue is the code related to that line. I am using access 2003
'Declare all variables for right-side record counter Dim bdg As DAO.Recordset Dim swr As DAO.Recordset Dim wtr As DAO.Recordset Dim dmo As DAO.Recordset ''Dim dvt As DAO.Recordset Dim occ As DAO.Recordset Dim fre As DAO.Recordset Dim swrlat As DAO.Recordset Dim wrtlat As DAO.Recordset
Dim bdgCount As Integer Dim swrcount As Integer Dim wtrcount As Integer Dim dmocount As Integer Dim dvtcount As Integer Dim occcount As Integer Dim frecount As Integer Dim countswr As Integer 'laterial counter Dim countwtr As Integer 'laterial counter
Dim sqlbdg As String Dim sqlswr As String Dim sqlwtr As String Dim sqldmo As String ''Dim sqldvt As String Dim sqlocc As String Dim sqlfre As String Dim sqlswrlat As String Dim sqlwtrlat As String
Dim db As DAO.Database
Private Sub Form_Current() Set db = CurrentDb() 'Use SQL strings to pull data from the tables sqlbdg = "SELECT [Building].[PIN] FROM Building WHERE [Building].[PIN]='" & Me![ADDRESS3] & "' ;" sqlswr = "SELECT [Sewerform].[PIN] FROM [SEWER SERVICE LATERALS] WHERE [Sewerform].[PIN]='" & Me![ADDRESS3] & "' ;" sqlwtr = "SELECT [water].[PIN] FROM [WATER SERVICE LATERALS] WHERE [water].[PIN]='" & Me![ADDRESS3] & "' ;" sqlswrlat = "SELECT [SewerMain].[PIN] FROM [SEWER MAIN PRBLEMS] WHERE [SewerMain].[PIN]='" & Me![ADDRESS3] & "' ;" sqlwtrlat = "SELECT [WaterMain].[PIN] FROM [WATER MAIN PROBLEMS] WHERE [WaterMain].[PIN]='" & Me![ADDRESS3] & "' ;" sqldmo = "SELECT [Demolition Permits].[PID] FROM [Demolition Permits] WHERE [Demolition Permits].[PID]='" & Me![ADDRESS3] & "' ;" ''There is no PIN field in the development table ==> sqlwtr = "SELECT [Development Permits].[PIN] FROM [Development Permits] WHERE [Development Permits].[PIN]='" & Me![ADDRESS3] & "' ;" sqlocc = "SELECT [Occupancy].[PIN] FROM Occupancy WHERE [Occupancy].[PIN]='" & Me![ADDRESS3] & "' ;" sqlfre = "SELECT [Freeze].[PIN] FROM Freeze WHERE [FREEZE].[PIN]='" & Me![ADDRESS3] & "' ;"
Set bdg = db.OpenRecordset(sqlbdg, dbOpenSnapshot) Set swr = db.OpenRecordset(sqlswr, dbOpenSnapshot) Set wtr = db.OpenRecordset(sqlwtr, dbOpenSnapshot) Set dmo = db.OpenRecordset(sqldmo, dbOpenSnapshot) ''Set dvt = db.OpenRecordset(sqldvt, dbOpenSnapshot) Set occ = db.OpenRecordset(sqlocc, dbOpenSnapshot) Set fre = db.OpenRecordset(sqlfre, dbOpenSnapshot) Set swrlat = db.OpenRecordset(sqlswrlat, dbOpenSnapshot) Set wrtlat = db.OpenRecordset(sqlwtrlat, dbOpenSnapshot)
'Building recordset On Error Resume Next If bdg.EOF And bdg.BOF = True Then bdgCount = 0 Else
With bdg .MoveFirst .MoveLast bdgCount = .RecordCount End With
End If
'Sewer recordset On Error Resume Next If swr.EOF And swr.BOF = True Then swrcount = 0 Else
With swr .MoveFirst .MoveLast swrcount = .RecordCount End With
End If
'Water recordset On Error Resume Next If wtr.EOF And wtr.BOF = True Then wtrcount = 0 Else
With wtr .MoveFirst .MoveLast wtrcount = .RecordCount End With
End If 'Sewer laterial recordset On Error Resume Next If swrlat.EOF And swrlat.BOF = True Then countswr = 0 Else
With swrlat .MoveFirst .MoveLast countswr = .RecordCount End With
End If
'Water laterial recordset On Error Resume Next If wrtlat.EOF And wrtlat.BOF = True Then countwtr = 0 Else
With wrtlat .MoveFirst .MoveLast countwtr = .RecordCount End With
End If
'Demolition recordset On Error Resume Next If dmo.EOF And dmo.BOF = True Then dmocount = 0 Else
With dmo .MoveFirst .MoveLast dmocount = .RecordCount End With
End If
'Development recordset ''On Error Resume Next ''If dvt.EOF And dvt.BOF = True Then dvtcount = 0 ''Else
Hello. I am trying to sort this out and hope someone can help.
Using Access 2002 front end, sqlserver 2000 back end.
In my front end database I have a query called "queEEGBilling" that is used to populate a report. It is quite a complex query which I did using the query designer, NOT with a WHERE sql command. I am not very good with SQL syntax.
The report works fine, and displays the records I want it to display.
However, after the report is displayed, I want to modify one field in each record to indicate that the report for hat record has been printed out (it is a billing package, and I want to indicate that the bill has been sent).
In order to do this, I need to access the recordset that was used to create the report. As I understand it, I cannot do this with a report (no equivalent of the recordsetclone property or anything similar). What I have to do is create the recordset that was used to create the report in the first place. No problem right?
set mydb=dbengine(0)(0) set rs1=mydb.openrecordset("queEEGBilling")
However, here I get the infamous error 3061. Too Few Parameters. Expected 1.
I have googled this up and down, and it seems to be related to my query being too complex. However, I did not write this query by hand, it came from Access2002. And this query worked fine to generate my report. So, why does it crash now??
I am running this code, and i am getting this error:
Code:Private Sub SendFormToConsultants_Click() On Error GoTo Err_SendFormToConsultants_Click Dim stWhere As String '-- Criteria for DLookup Dim varTo As Variant '-- Address for SendObject Dim stText As String '-- E-mail text Dim stSubject As String '-- Subject line of e-mail Dim stCOFNumber As String '-- The COF Number from form Dim stCustomerID As String '-- The Customer ID from form Dim stCompanyName As String '-- The Company Name from form Dim stContactName As String '-- The Contact Name from form Dim stAddress As String '-- The Company Address from form Dim stTRDW As String '-- The TRDW from form Dim stPreReq As String '-- The PreReq from form Dim stWorkLoc As String '-- The Location of Work from form Dim stDelivActiv As String '-- The Deliverables/Activities from form Dim stStartDate As Date '-- The Start Date from Subform Dim stEndDate As Date '-- The End Date from Subform Dim stWho As String '-- Reference to Resources Dim strSQL As String '-- Create SQL update statement Dim errLoop As Error '-- Combo of names to assign COF to stWho = Me.COF_Scheduled__Assigned_Resources__Subform1!Res ourceName stWhere = "Resources.ResourceName = " & "'" & stWho & "'" '-- Looks up email address from Resources varTo = DLookup("[ResourceEmail]", "Resources", stWhere) stCOFNumber = Me!COFNumber stCustomerID = Me.Consultancy_Order_Form_CustomerID stCompanyName = Me.CompanyName stContactName = Me!COFContact stAddress = Me.Address stTRDW = Me.TRDW stPreReq = Me.PreRequisites stWorkLoc = Me.WorkLocation stDelivActiv = Me.DeliverablesActivities stStartDate = Me.COF_Scheduled__Assigned_Resources__Subform1!Sta rtDate stEndDate = Me.COF_Scheduled__Assigned_Resources__Subform1!End Date stSubject = ":: New Consultancy Order Assigned ::" stText = "You have been assigned a new Consultancy Order." & vbCrLf & _ "Consultancy Order Form Number: " & stCOFNumber & _ vbCrLf & _ "Company ID: " & stCustomerID & _ vbCrLf & _ "Company Name: " & stCompanyName & _ vbCrLf & _ "Contact Name: " & stContactName & _ vbCrLf & _ "Address: " & stAddress & _ vbCrLf & _ "Terms of Reference / Description of Work: " & stTRDW & _ vbCrLf & _ "Pre-Requisites: " & stPreReq & _ vbCrLf & _ "Location of Work: " & stWorkLoc & _ vbCrLf & _ "Deliverables / Activities: " & stDelivActiv & _ vbCrLf & _ "Start Date: " & stStartDate & _ vbCrLf & _ "End Date: " & stEndDate & _ vbCrLf & _ "Please reply to confirm Consultancy Order Assignment." 'Write the e-mail content for sending to Consultant DoCmd.SendObject , , acFormatTXT, varTo, , , stSubject, stText, -1 'Set the update statement to disable command button once e-mail is sent strSQL = "UPDATE [Consultancy Order Form] SET [Consultancy Order Form].COFSentToConsultants = 0 " & _ "Where [Consultancy Order Form].COFNumber = " & Me!COFNumber & ";" On Error GoTo Err_Execute CurrentDb.Execute strSQL, dbFailOnError On Error GoTo 0 'Requery checkbox to show checked 'after update statement has ran 'and disable send mail command button Me!COFSentToConsultants.Requery Me!COFSentToConsultants.SetFocus Me.SendFormToConsultants.Enabled = False Exit SubErr_Execute: ' Notify user of any errors that result from ' executing the query. If DBEngine.Errors.Count > 0 Then For Each errLoop In DBEngine.Errors MsgBox "Error number: " & errLoop.Number & vbCr & _ errLoop.Description Next errLoop End If Resume NextExit_SendFormToConsultants_Click: Exit SubErr_SendFormToConsultants_Click: MsgBox Err.Description Resume Exit_SendFormToConsultants_ClickEnd Sub
What does it mean? it doesn't say where i have a problem in my code. What do you think?
I tried to get help elsewhere with this but it didn't quite work out, so I thought I'd pick a few other brains. So here's the problem from the beginning.
I made a table with three fields:
Field Name----Data Type Category------Text Item----------Text Cost----------Number
I set up a form with two combo boxes and two text boxes. I want to pick an Item from the combo box, and have the Cost appear in the corresponding text box. I set up the combo box to show each field when I click on the arrow.
I was given the following code to put in the After Update section under the Event tab for the combo box:
Private Sub Combo8_AfterUpdate() Me.Text2 = Me.Combo8.Column(2) End Sub
That works. I pick an item from the combo box, and its value appears in the text box next to it. Ultimately, I want to edit the value in the text box and have it update the table. I was given the following code for the text box:
Private Sub MyTextbox_AfterUpdate() Dim strSQL As String strSQL = "UPDATE MyTable " & _ "SET Myfield = " & Me.MyTextbox & _ " WHERE Id = " & Me.MyCombo CurrentDb.Execute strSQL, dbFailOnError End Sub
So far, that hasn't worked. I believe I've made the correct substitutions:
Private Sub Text2_AfterUpdate() Dim strSQL As String strSQL = "UPDATE [Primary Table] " & _ "SET Cost = " & Me.Text2 & _ " WHERE Id = " & Me.Combo8 CurrentDb.Execute strSQL, dbFailOnError End Sub
When I type a different value into the text box and hit enter, I get the following error:
Run-time error '3061': Too few parameters. Expected 2.
I was given a different line of code in the event that I'm "trying to pass text":
" WHERE Id = '" & Me.Combo8 & "'"
When I use that, the error is the same except it says:
I have been struggling with getting the syntax right for the ConcatRelate function. I have looked at other peoples examples and mine seems to have exactly the same syntax but it is giving me an error.
My Sql is
SELECT qr_RiverGroup.River, ConcatRelated("Site_ID","qr_RiverGroup","[River] = '" & [River] & "'") AS Expr1 FROM qr_RiverGroup;
I am receiving the error above when I try to execute the code below. I have checked the fields in the code as well as the table and I can't see what I am missing. The tblMeasure table which is the subform have the following fields:
The link between the two forms are StaffApraisedID to MStaffApraisedID then StaffID to MUserLoginID then StaffPosition to MPositonName. When I select a member and click the Duplicate button I received the error above. The area highlighted in red is where it errors out.
Code: Private Sub cmdDuplicateData_Click() On Error GoTo Err_cmdDuplicateData_Click Dim OldStaffID As Integer, NewStaffID As Integer OldStaffID = Me.StaffApraisedID 'Add new record to end of Recodset Object
I am trying to use DCount to count the number of records (speakers) for each session. Not being very savvy with DCount, I copied code that I had working for another instance of needing to count the number of records.
My query has three fields
Query used: Web/PrintReport_qry Session Id - number Speaker - string
Ive created a database using the file system object that creates folders, moves files from one folder to another, etc.
This works perfectly on my home pc, but when i try to install it on the server at work I get the following error message:-
Runtime Error 429
Active X component can't create object
I've had a look on the net and appears that it only happens on certain computers and I wondered if anyone had any quick fixes that they had come across over the years.
This query is getting complicated for me... I need help please! :( I need it to give me the data for people between FirstMonth, Year and SecondMonth, Year... Right now it's giving me only the FirstMonth, Year and SecondMonth, Year... I think I need a between there somewhere but not sure where to put it...?? Hope this makes sense. I'm doing the query in Access 2002
Thanks Sarah
SELECT [FirstName] & ", " & [LastName] AS FullName, TriOct10.FirstName, TriOct10.LastName, TriOct10.Address, TriOct10.City, TriOct10.Prov, TriOct10.PostalCode, TriOct10.VolScreenCode, DatePart("m",[PRCDate]) AS Month2, DatePart("yyyy",[PRCDate])+3 AS PRCDueY2, TriOct10.PRCDate, TriOct10.MemberType, TriOct10.MemberStatus, TriOct10.ExpandName, TriOct10.RegOrgName, TriOct10.RegisteredRole FROM TriOct10 WHERE (((DatePart("m",[PRCDate]))=[Enter 1st Month]) AND ((DatePart("yyyy",[PRCDate])+3)=[Enter First year])) OR (((DatePart("m",[PRCDate]))=[Enter Last Month]) AND ((DatePart("yyyy",[PRCDate])+3)=[Enter Last Year]) AND ((TriOct10.MemberType)="volunteer") AND ((TriOct10.MemberStatus)="Active" Or (TriOct10.MemberStatus)="probationary") AND ((TriOct10.ExpandName) Like "*" & [What Area?] & "*")) ORDER BY DatePart("m",[PRCDate]), DatePart("yyyy",[PRCDate])+3;