Как выбрать строку с базой данных MDB (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 ответ

Как это сделать, зависит от того, имеет ли ваша сетка dgMultiSelect в Options свойство установлено в 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 и найдите значение этого поля.
Другие вопросы по тегам