Текущий архив: 2006.12.03;
Скачать: CL | DM;
Вниз
Динамический запрос Найти похожие ветки
← →
Itonix © (2006-09-26 18:00) [0]я создаю запрос динамически в программе.записіваю его в ибКвери.СКЛ.Текст
но количество и названия возвращяемых полей могут разными.
как мне в ибКвери сделать так, что б он знал какие поля ему вернул запрос?
← →
DSKalugin © (2006-09-26 18:31) [1]Он знает и ты можеш узнать из свойств
← →
Desdechado © (2006-09-26 18:39) [2]он и так знает, т.к. поля создаются динамически на основании выполненого запроса, если их туда принудительно (например, в дизайне) не затолкать
← →
Itonix © (2006-09-26 18:46) [3]Спасибо
← →
Itonix © (2006-09-26 19:06) [4]вот такая проблема.мне в квери необходимо поле типа Калькулейтед, которое создаю в ДизайнТайм. после этого поля которые возвращает запрос не добавляються в ибКвери.
//поле типа Калькулейтед используеться примерно ьак:
procedure TfmRA_Ob_NumDistrOb.ibNumDistrCalcFields(DataSet: TDataSet);
begin
ibNumDistrDistr.AsFloat:=(ibNumDistr.ParamByName("COUNT").AsInteger/ibUCount.AsInteger)*100;
end;
ibNumDistrDistr -fkCalculated -забитое туда в ДизайнТайм
← →
Desdechado © (2006-09-26 21:53) [5]и как твое калькулир. поле калькулируется, если в [0] ты говоришь
"количество и названия возвращяемых полей могут разными"
?
а вообще поле можно добавить и в рантайме
← →
Itonix © (2006-09-26 23:10) [6]моя вина - забыл указать что одно поле всегда будет расчетное.
вот так я его создаю в рантайм
if ibNumDistr.Fields.FindField("distr") = nil then
begin
ibNumDistr.FieldDefs.Add("distr", ftFloat);
fFieldDef := ibNumDistr.FieldDefs.Find("distr");
fField := fFieldDef.CreateField(ibNumDistr);
fField.FieldName := "distr";
fField.Name := "distr";
fField.FieldKind:=fkCalculated;
end;
но после этого он не видит остальные поля :( , которые возврашяет запрос
← →
Itonix © (2006-09-27 08:51) [7]никто не знает?
← →
Johnmen © (2006-09-27 09:07) [8]А что там знать то?
Ты к пустой коллекции описателей полей добавил одно поле. И удивляешься, как так...
← →
Itonix © (2006-09-27 21:45) [9]а как сделать правильно?подскажите пожалуста,никогда раньше єтим не занимался
← →
Johnmen © (2006-09-27 21:50) [10]Все поля создавать динамически.
← →
Itonix © (2006-09-28 21:58) [11]а можно пример?
← →
Itonix © (2006-09-28 21:58) [12]Удалено модератором
← →
Itonix © (2006-09-28 22:17) [13]как правильно удалить все филды из квери?
у меня суть в чем:
1) при клике на кнопку генериться запрос в зависимости от выбранных юзером полей (энное кол-во полей которое вернет квери и одно расчетное поле (калькулейтед)
2)добавляються филды (как я выше писал)
3) запускаеться запрос...
4) как удалить все созданные филды из ибКвери?что -б не возникало проблем при повторном нажатии на кнопку?
← →
Johnmen © (2006-09-28 22:26) [14]FieldDefs.Clear
← →
Itonix © (2006-09-29 18:19) [15]если я делаю так при БаттонКлик:
..начало
ibQuery.Close;
ibQuery.FieldDefs.Clear;
...
добавляю в квери запрос,филды( запускаю
ibQuery.SQL.Clear;ibNumDistr.SQL.Text:=query;
ibQuery.Open;ibNumDistr.FetchAll;
//конец поцедуры
если теперь еще раз нажать на кнопку (запуск поцедуры) , то филды не исчезают :( (филдкаунт больше 0)
← →
Johnmen © (2006-09-30 00:40) [16]В данном контексте они исчезают при ibQuery.Close и появляются при ibQuery.Open
← →
Itonix © (2006-09-30 12:45) [17]Значит мне ее надо делать ibQuery.Close перед их удалением?
как их правильно все создать , запустить квери ,а потом удалить?может где-то есть статьи или примеры?
← →
Itonix © (2006-09-30 19:11) [18]нашел ошибку:
надо было так:
ibQuery.Close;
ibQuery.Fields.Clear;
ibQuery.FieldDefs.Clear;
← →
kaif © (2006-09-30 21:43) [19]Попробуй создать поле так после открытия запроса (AfterOpen):
var
F: TNumericField;
begin
F := TNumericField.Create(self);
F.FieldKind := fkCalculated;
F.FieldName := "distr";
F.Name := "distr";
F.DataSet := ibQuery;
end;
Я не помню, можно ли добавить к открытому набору поле. Кажется, можно было, хотя боюсь ошибиться.
Страницы: 1 вся ветка
Текущий архив: 2006.12.03;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.065 c