Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1163324692
Kerk
2006-11-12 12:44
2006.12.03
Фонарь


15-1163385443
kidm
2006-11-13 05:37
2006.12.03
Нуж помощь при оброшение к файлу


2-1163406624
Choco
2006-11-13 11:30
2006.12.03
Программа с многими формами


4-1153117586
Russ
2006-07-17 10:26
2006.12.03
Как из сервиса узнать имя текущего пользователя


2-1163865992
AlexanderMS
2006-11-18 19:06
2006.12.03
Вывод многострочного текста.