We have a simple access database, and would like a button on a form to only be available to select members of staff. (The button has an event tied to it). I’d like to store the usernames of the staff allowed to click the button in a separate table.
What I’d like to do, is perform a simple query to see if the username exists in the table, and set the enabled state of the button depending upon the outcome.
My background is C# and SQL Server, but VBA and access are new to me, and I think I’m struggling with the quirks of this environment.
I’ve got the username of the logged on user in a string fOSUserName via a call to GetUserNameA in advapi32.dll, but I’m struggling with the simplest of queries to determine if the username exists in the table.
Dim strSQL As String
Dim intResult As Integer
Dim db As DAO.Database
Dim rs As Recordset
Set db = CurrentDb
strSQL = "SELECT COUNT(*) FROM [USERS] WHERE [USERS].[NAME] = '" & _
fOSUsername & "'"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
If Not rs.EOF Then
intResult = rs.Fields(0)
Else
intResult = 0
End If
rs.Close
db.Close
This fails on db.OpenRecordset giving me the error
Run-time error ‘3061’:
Too few parameters. Expected 1.
Can anyone offer some pointers?
Sounds like your [USERS] object is not a table but Query (with parameter). Also, if you had a syntax error like ‘&_'(invalid) as opposed to ‘& _'(valid), your database would not compile. So, if table vs query is your case, please use the following: