• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Добавить Столбцы В Adoquery/adotable Программно

  • Автор темы Kurachev-danya
  • Дата начала
K

Kurachev-danya

Здравствуйте! У меня проблемка, не могу найти процедуру добавления нового вычесляемого столбца в адокуери. Такое вообще возможно?
 
S

sinkopa

Здравствуйте! У меня проблемка, не могу найти процедуру добавления нового вычесляемого столбца в адокуери. Такое вообще возможно?
А что мешает хелп почитать? :lovecodeby:
Код:
type
TForm1 = class(TForm)
Query: TADOQuery;
//...
procedure QueryCalcFields(DataSet: TDataSet);
private
FCalc : TStringField;
//...
end;

//...

var
i: Integer;
begin
with Query do begin
Close;
Prepared := False;
Sql.Clear;
Sql.Add('SELECT * FROM blabla_table');

// ...

Query.FieldDefs.Updated := false;
Query.FieldDefs.Update;
Query.Fields.Clear;
for i := 0 to Query.FieldDefs.Count - 1 do begin
if (Query.FindField(FieldDefs[i].Name) = nil) then
Query.FieldDefs.Items[i].CreateField(Query);
end;

FCalc := TStringField.Create(Query);
with FCalc do begin
FieldName := 'new_calc_field';
FieldKind := fkCalculated;
Size := 100;
DisplayWidth := 100;
DisplayLabel := 'Новое вычисляемое поле';
end;
FCalc.DataSet := Query;
Prepared := True;
end;
end;

procedure TForm1.QueryCalcFields(DataSet: TDataSet);
var
A,B : TField;
begin
A := Query.FieldByName('bla_bla_1');
B := Query.FieldByName('bla_bla_2');

if (A <> nil) and (A <> nil) then
FCalc.Value := IntToStr(A.AsInteger + B.AsInteger);
end;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!