My application has 7-8 users adding records to a database. If they need to edit a record, they click on the record number in the grid. It goes to a form with the record detail where they can click on an Edit button to change the record.

When a user clicks on his record to edit, he sometimes does not get his record but another record. This happens if other users have entered new records in the time between the grid display and the click to get the form field. Is there any way to fix this besides refreshing the screen quickly so no one adds a new record before I try to edit one after displaying the grid?
Why isn't the record id (key) passed instead of the relative record reference?

tscalls.asp?aspDBBut_999=aspDBgoForm::5
(ASPdb Enterprise version

<html>
<HEAD>
<TITLE>Technical Service Calls</TITLE>
</HEAD>

<!--#include file=dbconn.inc-->

<!--REQUIRED for CUSTOM TEXT! -->
<!--#include virtual=&#34;/aspdb/AspDB.Inc&#34; -->

<body>
<B>Technical Service Call Log</B>
<TABLE Border=0><TR><TD valign=top align=&#34;left&#34;>
<%&#39; Create the ASP-db™ object:
Set MyDb = Server.CreateObject(&#34;ASP.db&#34
MyDb.dbDAT = str1 &#39; Connect
dbUnit = 80

&#39; background, foreground, headerbg, headerfg, vstripe
MyDb.dbColor = &#34;white,black,89B5BC,black,CCDADD&#34;
MyDb.dbMode = &#34;Grid&#34;
MyDb.dbGridTableTag=&#34;border=3 style=font-size:12 width=500&#34; &#39; table attributes
MyDb.dbFormTableTag = &#34;border=3 width=300 style=font-size:12 cellspacing=2 cellpadding=2 &#34;

&#39;Select which Table and Fields to show:
MyDb.dbDBType = &#34;SQL&#34;
MyDb.dbSQL = &#34;Select * from TechServiceCalls Order By Timestamp desc&#34;
MyDb.dbGridInc = 10
MyDb.dbSuppressMsg = False

MyDb.dbFilterParams = &#34;UseRSFilter=False, TableTag=Border=3, Assistant=False, Help=False, TextBeforeTable=<b>Please select search criteria and click the Apply Filter button.<br>You can select more than one field for your search.</b><br>&#34;

MyDb.dbGridIndex=False
MyDb.dbButtonAnchor = False
GMAP = &#34;0,Ref #;Username, Associate; Timestamp, Date/Time;Minutes,Mins&#34;
MyDb.dbNameMap = GMAP
FMAP = &#34;Username, Associate; Timestamp, Date/Time;&#34;
MyDb.dbFormNameMap = FMAP
Mydb.dbMemoTextSize=&#34;500&#34;

MyDb.dbImageDir=&#34;/ASPdb/images/&#34;
&#39;All navigation items, change these as needed depending on screen displayed
MyDb.dbNavigationItem = &#34;Next,Prev,Add,Edit,Filter,ResetFilter&#34;
MyDb.dbNavigation = &#34;top&#34;
MyDb.dbNavigationIcon=&#34;std&#34;
&#39;---------------------------------------------------------------------------
&#39; define add/update parameters
MyDb.dbEditParams = &#34;TableName=TechServiceCalls,BookMarkFlds=ID &#34;
Mydb.dbEditDropFlds = &#34;Product,,,Voyager/Voyager Commercial/Odyssey/Precedent/IntelliPak/Large&#34; &_
&#34;Splits/Chillers/Diversified Products/Other;&#34; &_
&#34;SaleType,,,Post Sale/Pre Sale/Both;&#34; &_
&#34;CallType,,,Trane Service/CSO/DSO/IWD/ICS/Contractor/Parts/End user/International/Latin America/;&#34;
&#39; no edit on add for these fields
MyDb.dbEditAddROFlds = &#34;ID,TimeStamp, Username&#34;
&#39;format for form
MyDb.dbEditFlds = &#34;Caller, CallType, SaleType, Minutes, Comments, &#34; &_
&#34;Username[&#34; & Session(&#34;sUsername&#34 & &#34;],&#34; &_
&#34;TimeStamp[&#34; & now() & &#34;]&#34;

MyDb.dbGridDisplayFlds=&#34;0,1,2,5,10,12&#34;
MyDb.dbFormDisplayFlds=&#34;0,1,2,4,5,6,10,12&#34;
MyDb.dbFilterFlds=&#34;0,1,2,4,5,6,10,12&#34;
MyDb.dbFormMagicCell = &#34;Minutes, align=right width=20; &#34; &_
&#34;Comments,,<TEXTAREA Rows=3 COLS=60 style=&#39;font-size:12&#39;>#Comments# </TEXTAREA>;&#34; &_
&#34;Timestamp,,Format=[mm/dd/yy hh:mm]&#34;
MyDb.dbMagicCell = &#34;ID,width=8% align=right,,index;Minutes, align=right width=20;Timestamp,width=80,Format=[mm/dd/yy hh:mm];&#34; &_
&#34;Caller,width=20%;&#34; &_
&#34;Username,width=10%&#34;

MyDb.dbButtonsOnOff=&#34;EditDropOff&#34; &#39; remove button to turn off dropdowns
&#39; Specify Column Titles
MyDb.dbFldsNotes = &#34;Minutes,Enter call length in Minutes; Comments,Text will auto wrap&#34;
MyDb.dbEditHeader = False
LBUTTON = UCASE(Request(&#34;ASPdbClick_999&#34)
&#39;response.write (&#34;x&#34; & lbutton & &#34; button clicked<br>&#34; )

MyDb.dbUserLocalText = zAddhead & &#34;,<br><b>Add a New Record</b>; &#34;

if ucase(left(request(&#34;aspDBBut_999&#34,11)) = &#34;ASPDBGOFORM&#34; then
MyDb.dbNavigationItem = &#34;Edit&#34;
MyDb.dbNavigation = &#34;bottom&#34;
Response.write (&#34;Back to <a href=&#39;tscalls.asp?aspDBBut_999=aspDBgridTop&#3 9;>Main Page</a>&#34
else
if (LBUTTON = &#34;FILTER&#34 then
&#39; MyDb.dbNameMap = &#34;1,Date/Time;Minutes,Mins;&#34;
Response.write (&#34;Back to <a href=&#39;tscalls.asp?aspDBBut_999=aspDBgridTop&#3 9;>Main Page</a>&#34
elseif (LBUTTON = &#34;ADD&#34; or LBUTTON = &#34;APPLYADD&#34; or LBUTTON = &#34;EDIT&#34 then
Response.write (&#34;Back to <a href=&#39;tscalls.asp?aspDBBut_999=aspDBgridTop&#3 9;>Main Page</a>&#34
elseif (LBUTTON = &#34;DELETE&#34 then
Response.write(&#34;Delete record <p>&#34
else
MyDb.dbNavigationItem = &#34;Next,Prev,Add,Filter,ResetFilter&#34;
Response.write(&#34;Click the Reference Number for call details<p>&#34
MyDb.dbNameMap = &#34;0,Ref #;Username, Associate; Timestamp, Date/Time;Minutes,Mins&#34;
end if
end if

MyDb.ASPdb &#39; Show the Database now!

if( Request( &#34;ASPdbClick_999&#34; ) = &#34;applyfilter&#34 then

end if

if (Request( &#34;ASPdbClick_999&#34; ) = &#34;applyadd&#34; ) then
If Session(&#34;SV_RecAffected_999&#34 = 1 Then
Response.Redirect( Session( &#34;ThisFile&#34; ) & &#34;?aspDBBut_999=aspDBgridTop&#34; )

else
Response.write(&#34;Record was NOT added..... <br><br>&#34; & Session(&#34;ASPdb_999_Username&#34)
Response.write(&#34;Use the back button on your browser to correct your input and try to add again&#34
end if
end if
%>


</TD>
<TD WIDTH=30>&nbsp;</td>
<td style=&#34;background-color : lightyellow;&#34; valign=top>
<!--#include file=&#34;foot.asp&#34;-->
</td></TR></TABLE>
</body>
</html>