Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Add all fields программно   Найти похожие ветки 

 
Sour   (2005-07-23 06:59) [0]

Как в run-time добавить все поля запроса в свойство Fields TQuery. Чтобы сделать это в disign-time нажимает Add all fields, а как сделать это программно?


 
Sergey Masloff   (2005-07-23 11:38) [1]

а они и сами добавятся


 
Sour   (2005-07-23 11:59) [2]

Да, но если, я создам еще одно поле (например, вычисляемое) и добавлю его в Fields, то в результате оно одно в списке и останется. Если ничего не добавлять, то конечно, в списке Fields будут все поля запроса.

Мне надо добавить все поля из запроса и создать еще несколько вычисляемых.


 
Anatoly Podgoretsky ©   (2005-07-23 12:54) [3]

Они уже добавлены


 
Sour   (2005-07-23 13:06) [4]

Как добавлены?

Пример 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;


 
evvcom ©   (2005-07-23 15:09) [5]

Либо все поля в designtime определять, либо написать свой компонент-наследник от нужного тебе DataSet-а, в котором добавить событие OnCreateFields, перекрыть метод CreateFields, вызвать в нем inherited и потом обработчик события OnCreateFields. Можно для удобства добавить методы CreateCalcField и CreateLookupField. А в обработчике эти методы и вызывать.


 
Leonid Troyanovsky ©   (2005-07-24 09:05) [6]


> 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.



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-1123364372
SoftX
2005-08-07 01:39
2005.09.04
Сожрал семь пачек Ноотропила. Когда стану умным?


1-1123925524
Brainman
2005-08-13 13:32
2005.09.04
Источники света


6-1116580918
EGK
2005-05-20 13:21
2005.09.04
Не работает apache shared module под 2 Apache


9-1115658091
BREVIS
2005-05-09 21:01
2005.09.04
Конвертирование моделей.


1-1123696512
Yegorchic
2005-08-10 21:55
2005.09.04
Как перевести из "цвета" в "текст"?