Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
14-1123734954
Fin
2005-08-11 08:35
2005.09.04
Ура. Отпуск.


14-1123724503
inew
2005-08-11 05:41
2005.09.04
Вопрос по теории СУБД.


14-1123812340
Думкин
2005-08-12 06:05
2005.09.04
12 августа. С днем рождения!


8-1114086942
anat
2005-04-21 16:35
2005.09.04
OpenGL транформация


1-1123593987
Alexey_T-O
2005-08-09 17:26
2005.09.04
Конвертация olevariant




   Наверх