I have a data entry form in an MS Access 2010 database which is bound to a table called CommunicationTable, which in turn contains a primary key CommunicationNumber, a foreign key ClientNumber, and a field called Level. When the user opens the form, the ClientNumber is automatically populated into a textbox called ClientNumber. I want the Level textbox to show a default value equal to the value that was recorded for Level in the most recent record (highest CommunicationNumber value) for the specified ClientNumber in CommunicationTable. How do I set this up?
Here is the code I am currently using in the Default Value expression builder for the Level textbox in the form's property sheet:
=DLookUp([Level],[CommunicationTable],[CommunicationNumber]=DMax([CommunicationNumber],[CommunicationTable],[ClientNumber]=[Me].[ClientNumber]))
This code is giving an empty value when I load the form with a valid ClientNumber. I thought this might be due to the DMax() function producing the current (blank) row about to be added to the CommunicationTable, but I get the same empty result when I use the following instead:
=DLookUp([Level],[CommunicationTable],[CommunicationNumber]=DMax([CommunicationNumber],[CommunicationTable],[ClientNumber]=[Me].[ClientNumber])-1 )
How can I change this expression so that it gives the most recent value of Level for the specified ClientNumber in CommunicationTable?
EDIT:
I tried the following, but it is giving a #type! error:
=DLookUp("[Level]","[CommunicationTable]","CommunicationNumber= " &
DMax("CommunicationNumber","[CommunicationTable]","[ClientNumber]=
" & [Forms]![Main]![NavigationSubform].[Form]![ClientNumber] & ""))
Note that the ClientNumber textbox in the form is itself populated using the expression:
[Forms]![Main]![NavigationSubform].[Form]![ClientNumber]