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.