如何选择具有MDB数据库的行(TDBGrid)

时间:2018-03-28 20:02:22

标签: delphi tdbgrid

我希望有人可以帮助我。我知道如何显示列但仅针对所选行,不知道如何选择行。

我有一个小的MDB 3x9

Item    Supplier    Price
--------------------------    
apple   applesRus   $1
Grape   GrapesRus   $2
Milk    MilkRus     $3
....    ....        ...

只想了解供应商(只是草稿)

for supplierList < 9 do;
begin
supplierlist + 1;
supplier : = DBgrid1.row[supplierlist].field[1];
memo1.Lines.Add(Supplier);
end;

1 个答案:

答案 0 :(得分:0)

如何解决这个问题取决于您的网格是否在Options属性中具有dgMultiSelect 设置为true或false。

如果dgMultiSelect为False,则只需查找字段值即可 提供DBGrid的数据集的当前行,因为在DBGrid中显示为选中的记录是数据集的逻辑光标所在的记录。你可以用

之类的东西做到这一点
  Memo1.Lines.Add(DataSet.FieldByName('Supplier').AsString);

如果dgMultiSelect为True,则需要利用选中行的事实 DBGrid记录在TBookmarkList中,可通过网格的SelectedRows属性访问。 基本上,您迭代SelectedRows,使用每个书签访问相应的行 在数据集中并查找字段值。像

这样的东西
  ADataSet := DBGrid1.DataSource.DataSet;

  for i:=0 to DBGrid1.SelectedRows.Count-1 do begin
    ADataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
    Memo1.Lines.Add(DataSet.FieldByName('Supplier').AsString);
  end;

当操作一个多个记录时,在性能方面更好:

  • 支持对DisableControls和EnableControls的调用之间的操作 在数据集上,使用try ..finally ...

  • 将ADataSet.FieldByName(somename)的结果分配给本地TField变量 并从中查找字段值。