GIT список новых / измененных / удаленных файлов

Чтобы показать значения в ячейке DBGrid, которые фактически не находятся в вашей базе данных, вы можете добавить calculated field.

Вы дважды щелкаете по источнику: ADOQuery1 и добавляете все поля, которые вы хотите в список доступных полей. Затем вы добавляете новое поле. (Я оставил остальные поля пустыми, потому что я ленив, но вы должны обязательно добавить все поля из базы данных, которую вы хотите перечислить)

Вы задаете свойства по мере необходимости (не забудьте, что радиообъект находится в середине диалога).

В вашей форме будет добавлено новое поле, соответствующее имени, которое вы указали в поле Name (с префиксом имени набора данных) . Затем вы дважды щелкаете по событию OnCalcFields набора данных (ADOQuery1) и вставляете в код для заполнения вычисленных полей, например:

procedure TForm44.ADOQuery1CalcFields(DataSet: TDataSet);
begin
  ADOQuery1ExampleCalc1.AsString:= 'Prefix:'+DataSet.FieldByName('Field1').AsString;
  ADOQuery1ExampleCalc2.AsInteger:= DataSet.FieldByName('Amount').AsInteger+100;
end;

Примечание. Если вы показываете много строк, вы найдете что он может отображаться медленно. В этом случае замените FieldByName на фактическую ссылку на поле, например. ADOQuery1Field1. FieldByName выполняет поиск каждый раз, когда он вызывается, что замедляет работу.

Примечание 2 Вы также можете комбинировать данные из двух таблиц базы данных в событии OnCalcFields, но будьте осторожны, что событие вызывается один раз для каждой отображаемой строки, поэтому убедитесь, что ваш поиск мгновенно. Если нет, это может быть лучшей идеей изменить инструкцию SQL в вашем запросе.

Дальнейшее чтение См. здесь (если вы хотите сделать это во время выполнения): Добавление вычисленного поля в запрос во время выполнения

Вот официальный документация: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Defining_a_Calculated_Field

Пример кода: http://docwiki.embarcadero.com/RADStudio / Сиэтл / ru / Программирование_a_Calculated_Field

29
задан Jean 28 March 2012 в 20:58
поделиться