Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не удается отфильтровать записи в связке Firebird1.0+IBX+EhLib. [D7]


Страницы:   1 2

miwa ©   (2004-11-14 16:34:00) 

Делаю так:

procedure TfrmMain.btnFilterClick(Sender: TObject);
begin
 frmFilter.ShowModal;
 if frmFilter.ModalResult = mrOK then
   ApplyMyFilter;
end;

procedure TfrmMain.ApplyMyFilter;
begin
 dtmIBase.IBDataSet1.Filter:=frmFilter.ResultFilter;
 dtmIBase.IBDataSet1.Filtered:=true;
end;
{***********************}
procedure TfrmFilter.btnOKClick(Sender: TObject);
begin
 ResultFilter:=ChangeFilter;
 lblResult.Caption:=ResultFilter;
end;

function TfrmFilter.ChangeFilter:string;
begin
 Result:=cmbField.Text + cmbOperation.Text + edtValue.Text;
end;

После выполнения всего этого записи не фильтруются, хотя набор данных переоткрывается. Но все же остается неизменным.


Fran   (2004-11-21 12:25:00) [1]

Да не пользуйтесь вы фильтром. Есть в SELECT штука WHERE.


Johnmen   (2004-11-15 11:01:00) [2]

А я и не убеждаю. Я хочу понять твои резоны.
Пока не понял...


Fay   (2004-11-15 10:56:00) [3]

Всё, ладно. Мы по-разному смотрим на вещи (во всяком случае на некоторые). Нет смысла друг-друга убеждать.


Johnmen   (2004-11-15 10:53:00) [4]

>Fay ©   (15.11.04 10:46) [29]
>См. [6]

Т.е. завести переменную и написать некоторое количество кода проще, чем обращаться FieldByname ???

>...

Дальше не понял...


Fay   (2004-11-15 10:46:00) [5]

2 Johnmen ©   (15.11.04 10:40) [27]
>> Во-первых, объекта поля (как ты указал IBQuery1COUNT) может вообще не существовать.
См. [6]
>> Во-вторых, если мы не "видим" поиска, а это так, то можно считать, что его просто и нет...
if DataSet.FieldByName('COUNT').AsInteger = 1
  then Accept:=true
  else Accept:=false;

Это мы тоже "видим" ещё хуже 8)


Fay   (2004-11-15 10:43:00) [6]

2 Mike Kouzmine ©   (15.11.04 10:37) [26]
>> IBX[0]
Так лучше не делать. Особенно в слечае с "select * from table1"

>> То бишь FieldByName('MyField') менее читабельно, чем IBXMyfield
Существую правила/соглашения об образовании имён переменных. И они (эти правила/соглашения) призваны повысить читаемость кода. Можно (к примеру) взять и дать переменной хорошо читаемое/распознаваемое имя.


Johnmen   (2004-11-15 10:40:00) [7]

>Fay ©   (15.11.04 10:34) [25]

Во-первых, объекта поля (как ты указал IBQuery1COUNT) может вообще не существовать.
Во-вторых, если мы не "видим" поиска, а это так, то можно считать, что его просто и нет...


Mike Kouzmine   (2004-11-15 10:37:00) [8]

Fay ©   (15.11.04 10:27) [23] То бишь FieldByName('MyField') менее читабельно, чем IBXMyfield или паче того IBX[0]


Fay   (2004-11-15 10:34:00) [9]

>> Так вот, время на отображение многократно превышает время на обработку данного события. Не побоюсь этого слова...:)
Трудно поспорить. Но поиск поля каждый раз не имеет смысла (если этот обработчик прибит к одному DataSet-у, а так обычно и бывает), и я всё ещё настаиваю на этом. 8)


Johnmen   (2004-11-15 10:30:00) [10]

>Fay ©   (15.11.04 10:21) [21]

>Тон такой.
>> И что с того ? В чём твоя печаль ?

Ну не поставил смайлик :)

Вообще-то, OnFilterRecord вызывается при каждом явном или неявном обращении к записи. И в большинстве случаев именно неявно, когда необходимо отобразить запись. Так вот, время на отображение многократно превышает время на обработку данного события. Не побоюсь этого слова...:)


Fay   (2004-11-15 10:27:00) [11]

2 Mike Kouzmine ©   (15.11.04 10:23) [22]
Это я о читабельности.
Мне вот совершенно не очевидно, что код с FieldByName читабельней. Скажу больше - увидев это, я первым делом полезу проверять, действительно ли такой поле будет найдено. Это и есть читабельность?


Mike Kouzmine   (2004-11-15 10:23:00) [12]

Fay ©   (15.11.04 10:21) [21] "Видимо эта та самая красота, которая мир не спасает, но жертв требует."

П.. п... переведи....


Fay   (2004-11-15 10:21:00) [13]

2 Johnmen ©   (15.11.04 10:17) [19]
Тон такой.
>> И что с того ? В чём твоя печаль ?

>> 2. Читабельность.
Видимо эта та самая красота, которая мир не спасает, но жертв требует.


Johnmen   (2004-11-15 10:19:00) [14]

>Fay ©   (15.11.04 10:15) [18]

Ну да, пусть она отдохнёт, а ты поработаешь над разборкой кода...:)


Johnmen   (2004-11-15 10:17:00) [15]

>Fay ©   (15.11.04 10:08) [16]
>Признаюсь, мне сложно говорить в таком тоне - ощущаю себя кретином.

Я в недоумении... Какой тон, какие кретины...:)

1. Конечно.
2. Читабельность.

см.также Mike Kouzmine ©   (15.11.04 10:12) [17]


Fay   (2004-11-15 10:15:00) [16]

Я хочу сказать, что некрасиво (IMHO) заставлять программу выполнять бессмысленные действия.


Mike Kouzmine   (2004-11-15 10:12:00) [17]

Fay ©   (15.11.04 10:08) [16] Возможно, ты хочешь сказать, что этот способ намного медленнее, чем другие? Тогда подскажи - насколько медленнее.


Fay   (2004-11-15 10:08:00) [18]

2 Johnmen ©   (15.11.04 09:57) [15]
Признаюсь, мне сложно говорить в таком тоне - ощущаю себя кретином.
1) Правда ли, что OnFilterRecord выполняется "много раз"?
2) Скажите мне, plz, какие преимущества у поиска поля при каждом вызове OnFilterRecord?


Johnmen   (2004-11-15 09:57:00) [19]

>Мне пофиг

Ну это заметно, начиная с [4] :)))

>у меня такого кода не бывает.

А какой бывает ? И почему ?


Fay   (2004-11-15 09:47:00) [20]

Я, видимо, либо сплю ещё, либо просто чего-то не понимаю.
>> И что с того ? В чём твоя печаль ?
Мне пофиг - у меня такого кода не бывает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо