Nieoczekiwane zachowanie TTable i TDBGrid w Delphi XE2

Mam pole tekstowe i siatkę na formularzu.

Funkcjonalność: Kiedy wprowadzam Emp ID (powiedzmy 1, 2, 3 itd.) W polu tekstowym, odpowiadającym temu Emp ID, Emp Name powinna znaleźć się w siatce z bazy danych. Kiedy ponownie wprowadzę inny identyfikator Emp, kolejna nazwa Emp powinna zostać osadzona w siatce w następnym wierszu i tak dalej ... tyle razy, ile chcę i nie. Nazwa emp powinna nadal przychodzić w następnej linii siatki w ten sposób.

Myślę, że wyjaśniłem moje pytanie tak, jak mogłem.

Moje podejście

Używam do tego TTable, TDatasource i TDBGrid. Po wprowadzeniu dowolnego identyfikatora Emp w polu tekstowym i naciśnięciu klawisza Enter sprawdzam nazwę Emp w bazie danych, a następnie dołączam tę nazwę do TTable. Następnie przypisuję ten TTable do TDatasource i wreszcie TDatasource do TDBGrid. Poniżej znajduje się kod tego

Table1.Close;

//Create table for the first time

if not Table1.Exists  then
begin
      Table1.Close;

      Table1.DatabaseName    := 'databaseName';
      Table1.TableType           := ttParadox;
      Table1.TableName          := 'MyTable';
      Table1.FieldDefs.Clear;
      Table1.FieldDefs.Add('EmpName',ftString,40);
      Table1.CreateTable;

      Table1.Open;
end;

   Table1.Open;
   Table1.Append;
   Table1.FieldByName('EmpName').AsString := EmpName; //EmpName is fetched from database
   Table1.Post;
//Now assign this table to datasource
       DataSource1.DataSet := Table1;
//Now assign this datasource to dbgrid
       DBGrid1.DataSource := DataSource1;

Mój problem: Moim problemem jest to, że rekordy pokazane w siatkach zachowują się nienormalnie. Rekordy nie są wyświetlane w odpowiedniej kolejności, ale są ze sobą wymieszane. Oznacza, że ​​wiersze danych w siatce nie są pokazywane w kolejności, w której dołączyłem. Co może być problemem. Czy muszę odświeżyć jakieś źródło danych lub dbgrid przed powiązaniem za każdym razem lub coś innego. Pomóż w tym.

questionAnswers(1)

yourAnswerToTheQuestion