Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: CL | DM;

Вниз

Query OnFilterRecord   Найти похожие ветки 

 
Al11 ©   (2003-02-25 13:48) [0]

Почему отбирая запись в Query
следующим образом
В OnFilterRecord:
Accept:=Query["XXXXX"]>100;
Query не отфильтровывается по вычисляемым полям (вместо XXXXX - вычисляемое поле),
а не вычисляемые работают нормально
и как это можно сделать (в смысле по вычисл. отфильтр.) ?!?!?!?!?


 
Al11 ©   (2003-02-25 15:56) [1]

1


 
Соловьев ©   (2003-02-25 16:00) [2]


> Accept:=Query["XXXXX"]>100

Может так:

...
Accept := (Query.FieldByName("XXXX").AsInteger>100);
...


 
Johnmen ©   (2003-02-25 16:06) [3]

Вообще-то, д.б. нормально...
Попробуй явное приведение типа :
Accept:=Query.FieldByName("XXXXX").AsInteger{AsFloat}>100


 
Al11 ©   (2003-02-26 14:30) [4]

Создал Paradox-табличку (XXX) с полями
A : LongInteger - Key
B : LongInteger
C : Currency
D : LongInteger
E : Currency
В Project на форму положил DataBase1, DataSource1, Query1, DbGrid1, Button1
Query с полями (Таблички XXX)
A : Integer - Key
B : Integer
C : Currency
D : Integer
E : Currency
BD: Integer
CD: Currency
в OnCalcFields:
Query1BD.Value:=Query1B.Value+Query1D.Value;
Query1CE.Value:=Query1C.Value+Query1E.Value;
в OnFilterRecord:
Accept := Query1.FieldByName("BD").AsInteger>50;
DbGrid1 (cвойство DataSource:="DataSource1")
DataSource (cвойство DATASET:="Query1")
Button1
В OnClick:
Query1.Filtered:=true; (изначально false)
Заполним табличку значениями
Жмем Run
Grid заполнен. Жмем Button1
Grid пустой!!!!
Если в OnFilterRecord: вместо
Accept := Query1.FieldByName("BD").AsInteger>50;
поставим
Accept := Query1.FieldByName("B").AsInteger>50;
все работает для этого не вычислямого поля
может что не так написал !?!?!?!?!?!?!?!


 
Johnmen ©   (2003-02-26 14:51) [5]

Единственное критическое место, мною обнаруженное :
попробуй
в OnCalcFields:
Query1BD.As...:=Query1B.As...+Query1D.As...;
Query1CE.As...:=Query1C.As...+Query1E.As...;


 
Al11 ©   (2003-02-26 15:33) [6]

Пожалуйста,
в OnCalcFields:
Query1BD.AsInteger:=Query1B.AsInteger+Query1D.AsInteger;
Query1CE.AsCurrency:=Query1C.AsCurrency+Query1E.AsCurrency;
Результат тот же.
Может альтернативу какую подскажете для фильтрации по выч. полям.
А то не знаю что и делать ?????!!!!! а надо бы, очень...


 
Al11 ©   (2003-02-26 15:39) [7]

1


 
Соловьев ©   (2003-02-26 15:48) [8]

Делай вычисления в onFilterRecord:
Accept := (Query.FieldByName("XXXX").AsInteger+Query.FieldByName("YYYYY").AsInteger)>100;



 
Johnmen ©   (2003-02-26 15:51) [9]

Непонятки....А поля точно Calculated ? Так и были созданы ?

Ну если уж не получается по вычислимым, то просто по обычным :
Accept := (Query1.FieldByName...+Query1.FieldByName...)>50;
Какая разница, где вычислять.....:)



 
Johnmen ©   (2003-02-26 15:59) [10]

>Соловьев ©

Опять забавная синхронность...:)))


 
Соловьев ©   (2003-02-26 16:06) [11]

Прям мысли читаешь :)))


 
Al11 ©   (2003-02-26 16:09) [12]

Поля точно Calculated.
Так Accept := (Query1.FieldByName...+Query1.FieldByName...)>50
все работает,
Но если вычисления (расчеты в полях) - Большие, Замучаешся!!!!


 
Соловьев ©   (2003-02-26 16:11) [13]

2 Al11 ©
не бойся все как раз нормально...


 
Al11 ©   (2003-02-26 16:14) [14]

Спасибо за советы!!!
Не первый раз уже выручаете (синхронно!!!)...



Страницы: 1 вся ветка

Текущий архив: 2003.03.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
14-54274
han_malign
2003-02-28 14:36
2003.03.17
Закон Уолтмена. Никогда не программируйте


4-54373
Shuric
2002-11-26 22:46
2003.03.17
Совмещение DOS и Widows


1-53995
Dimonich
2003-03-04 20:56
2003.03.17
Как привязать к exe шнику открытие формы (проекта)


3-53941
Соловьев
2003-02-26 14:27
2003.03.17
Как в IB(FireBird) сделать автоинкриментное поле ?


3-53871
jtiger
2003-02-19 11:01
2003.03.17
Проблема при записи текста на русском текста в MSSQL2000