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