title: How to choose Delphi ADO Cursor location and Cursor Type
body: <p>we have migrated a Delphi Project(Banking Application) from BDE to ADO and we have kept all the default properties as is and while unit testing there are issues.</p>
  
  <p>One issue is <strong>"Row cannot be located for updating. Some values may have been changed since it was last read"</strong></p>
  
  <p>the Issue is coming while updating a table. Table employee is having Update trigger and it is updating same table(Employee) based on some checks.whether trigger updates the table or not system is throwing above error.</p>
  
  <p>Most Suggested Solution : 
  <code>ADODataSet1.Properties['Update Criteria'].value :=adCriteriaKey;</code> and it didnt work.</p>
  
  <p>After googling we have come to know there are some properties like Cursor location and Cursor Type which are important while working with ADO.</p>
  
  <p>we have just changed Cursor Location to clUseServer from clUseClient and it started working(magic) and we dont know why it is working. </p>
  
  <p>now we are super confued what cursor location or Cursor type to use.</p>
  
  <p><strong>About My Application:</strong></p>
  
  <p>1) List view or DBGrid to show the records to user.</p>
  
  <p>2) we are using data aware controls(more controls).</p>
  
  <p>3) there are lots of inserts , updates and deletions</p>
  
  <p>3) there are around 1000 users who uses this application.</p>
  
  <p>4) Same user can work on same screen/Record.</p>
  
  <p>after going through <a href="https://msdn.microsoft.com/en-us/library/aa266531(v=vs.60).aspx" rel="nofollow noreferrer">Client-Side Cursors Versus Server-Side Cursors</a> we are planning to for Server Side cursors.</p>