title: Why qry.post executed with asynchronous mode?
body: <p>Recently I met a strange problem, see code snips as below:</p>
  
  <pre><code>var
    sqlCommand: string;
    connection: TADOConnection;
    qry: TADOQuery;
  begin
    connection := TADOConnection.Create(nil);
    try
      connection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.MDB;Persist Security Info=False';
      connection.Open();
      qry := TADOQuery.Create(nil);
      try
        qry.Connection := connection;
        qry.SQL.Text := 'Select * from aaa';
        qry.Open;
  
        qry.Append;
        qry.FieldByName('TestField1').AsString := 'test';
  
        qry.Post;
        beep;
      finally
        qry.Free;
      end;
    finally
      connection.Free;
    end;
  end;
  </code></pre>
  
  <p>First, Create a new access database named test.mdb and put it under the directory of this test project, we can create a new table named aaa in it which has only one text type field named TestField1.</p>
  
  <p>We set a breakpoint at line of  "beep",  then lunch the test application  under ide debug mode, when ide stops at the breakpoint line (qry.post has been executed), at this time we use microsoft access to open test.mdb and open table aaa you will find there are no any changes in table aaa, if you let the ide continue running after pressing f9 you can find a new record is inserted in to table aaa, but if you press ctrl+f2 to terminate the application at the breakpoint, you will find the table aaa has no record been inserted, but in normal circumstance, a new record should be inserted in to the table aaa after qry.post executed.
  who can explain this problem , it troubles me so long time. thanks !!!</p>
  
  <p>BTW, the ide is delphi 2010, and the access mdb file is created by microsoft access 2007 under windows 7</p>