I have a simple query tied to a command button that shows a summary of the values in a particular field. It’s running on a table that changes with each use of the database, so sometimes the table will contain this field and sometimes it won’t. When the field (called Language) is not in the file, the user clicks the command button and gets the “Enter Parameter Value” message box. If they hit cancel they then get my message box explaining the field is not present in the file. I would like to bypass the “Enter Parameter Value” and go straight to the message if the field is not found. Here is my code:
Private Sub LangCount_Click()
DoCmd.SetWarnings False
On Error GoTo Err_LangCount_Click
Dim stDocName As String
stDocName = "LanguageCount"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Err_LangCount_Click:
MsgBox "No Language field found in Scrubbed file"
Exit_LangCount_Click:
Exit Sub
DoCmd.SetWarnings True
End Sub
You can attempt to open a recordset based on the query before you run the query:
This will go straight to the error coding if anything is wrong with the query.
Alternatively, if it is always the language field and always in the same table, you can:
This will also fail and go to your error coding, but if it does not fail, you will have a much smaller recordset, one with zero records.
You can easily enough get a list of fields in a table with ADO Schemas:
More info: http://support.microsoft.com/kb/186246