Форум: "Базы";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c