Предмет:
У меня есть процедура, которой я передаю разные параметры и получаю разные рекордсеты.
Так же я собираюсь передавать в рекордсеты фиктивное поле, с которым хочу произвести некоторые OnCalcField операции (хотя это и не одно и тоже). Тем не менее.
Возможно ли запустить OnCalcField без указания даже одного поля в редакторе полей TMSStoredProc и как?
Благодарю.
Как OnCalcField без указания полей в редакторе полей TMSStoredProc?
-
- Сообщения: 2
- Зарегистрирован: Чт 01 авг 2013 13:16
Re: Как OnCalcField без указания полей в редакторе полей TMSStoredProc?
Событие OnCalcFields вызывается только при наличии вычисляемых полей. Для создания вычисляемых полей, Вам следует использовать редактор полей.
-
- Сообщения: 2
- Зарегистрирован: Чт 01 авг 2013 13:16
Re: Как OnCalcField без указания полей в редакторе полей TMSStoredProc?
Только так и никак иначе не "триггернуть" это событие в компоненте?
Re: Как OnCalcField без указания полей в редакторе полей TMSStoredProc?
Вы можете создавать вычисляемые поля во время выполнения. Например:
Код: Выделить всё
procedure TMainForm.ButtonClick(Sender: TObject);
var
i: integer;
fd: TIntegerField;
begin
MSStoredProc.StoredProcName := 'stored_proc_name';
MSStoredProc.PrepareSQL;
MSStoredProc.FieldDefs.Update;
// создаем поля которые возвращаются с сервера
for i := 0 to MSStoredProc.FieldDefs.Count - 1 do
MSStoredProc.FieldDefs[i].CreateField(MSStoredProc);
// добавляем новое вычисляемое поле
fd := TIntegerField.Create(MSStoredProc);
fd.FieldName := 'clc';
fd.FieldKind := fkCalculated;
fd.DataSet := MSStoredProc;
MSStoredProc.Open;
end;
procedure TMainForm.MSStoredProcCalcFields(DataSet: TDataSet);
begin
DataSet.FieldByName('clc').AsInteger := DataSet.FieldByName('fieldname').AsInteger * 2;
end;