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