![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Add all fields программно
Sour © (2005-07-23 06:59:00)Как в run-time добавить все поля запроса в свойство Fields TQuery. Чтобы сделать это в disign-time нажимает Add all fields, а как сделать это программно?
Leonid Troyanovsky (2005-07-24 09:05:00) [1]
> Sour (23.07.05 13:06) [4]
> with SomeQuery do
> begin
> Close; //здесь Fields.Count = 0
> SQL.LoadFromFile('sql.sql'); //Пусть запрос возвращет 4
..
Как их добавить? Не самому же парсить SQL.
Примерно так:
FieldDefs.Update;
for i := 0 to FieldDefs.Count-1 do
FieldDefs[i].CreateField(Self);
--
Regards, LVT.
evvcom (2005-07-23 15:09:00) [2]Либо все поля в designtime определять, либо написать свой компонент-наследник от нужного тебе DataSet-а, в котором добавить событие OnCreateFields, перекрыть метод CreateFields, вызвать в нем inherited и потом обработчик события OnCreateFields. Можно для удобства добавить методы CreateCalcField и CreateLookupField. А в обработчике эти методы и вызывать.
Sour (2005-07-23 13:06:00) [3]Как добавлены?
Пример 1:
with SomeQuery do
begin
Close; //здесь Fields.Count = 0
SQL.LoadFromFile('sql.sql'); //Пусть запрос возвращет 4 поля
Open; //здесь Fields.Count = 0
//здесь Fields.Count = 4
end;
Все замечательно - действительно после открытия 4 поля.
Пример 2:
with SomeQuery do
begin
Close; //здесь Fields.Count = 0
SQL.LoadFromFile('sql.sql'); //Пусть запрос возвращет 4 поля
NewCalcField := TStringField.Create(SomeQuery);
NewCalcField.FieldKind := fkCalculated;
NewCalcField.Name := 'fiNewCalcField';
NewCalcField.FieldName := 'my_calc_field';
NewCalcField.Size := 255;
NewCalcField.DataSet := SomeQuery;
Open; //здесь Fields.Count = 0
//!!! А здесь Fields.Count = 1. В списке только одно поле - my_calc_field, а мне помимо него еще все поля запроса нужны!!
Как их добавить? Не самому же парсить SQL.
end;
Anatoly Podgoretsky (2005-07-23 12:54:00) [4]Они уже добавлены
Sour (2005-07-23 11:59:00) [5]Да, но если, я создам еще одно поле (например, вычисляемое) и добавлю его в Fields, то в результате оно одно в списке и останется. Если ничего не добавлять, то конечно, в списке Fields будут все поля запроса.
Мне надо добавить все поля из запроса и создать еще несколько вычисляемых.
Sergey Masloff (2005-07-23 11:38:00) [6]а они и сами добавятся