Главная страница
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.043 c
6-1116571383
Net2
2005-05-20 10:43
2005.09.04
Включён ли компьютер


4-1121415380
volser
2005-07-15 12:16
2005.09.04
Drag&Drop на API в ListView


3-1121766674
buka
2005-07-19 13:51
2005.09.04
"Щелкнуть" по записи в DBGrid и выйти на страничку HTML..?


6-1116582908
Alex870
2005-05-20 13:55
2005.09.04
Удаленный логин


14-1123802724
Kerk
2005-08-12 03:25
2005.09.04
American Beauty