我在表单上有一个文本框和一个网格。
功能:当我在文本框中输入对应于该 Emp ID 的 Emp ID(例如 1、2、3 等)时,Emp Name 应该来自数据库的网格。当我再次输入另一个 Emp ID 时,Another Emp Name 应该嵌入到下一行的网格中,依此类推……我希望多少次都没有。emp 名称应该继续以这种方式出现在网格的下一行。
我想我已经尽可能地解释了我的问题。
我的方法
我为此使用 TTable、TDatasource 和 TDBGrid。当我在文本框中输入任何 Emp ID 并按 Enter 时,我会检查数据库中的 Emp Name,然后将该名称附加到 TTable。然后我将此TTable 分配给TDatasource,最后将TDatasource 分配给TDBGrid。以下是此代码
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;
我的问题:我的问题是,网格中显示的记录表现异常。记录没有按正确的顺序显示,而是相互混合。表示网格中的数据行未按我以前附加的顺序显示。可能是什么问题呢。在每次绑定之前我是否要刷新一些数据源或 dbgrid 或其他东西。请在这方面提供帮助。