![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не удается отфильтровать записи в связке Firebird1.0+IBX+EhLib. [D7]
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]Я, видимо, либо сплю ещё, либо просто чего-то не понимаю.
>> И что с того ? В чём твоя печаль ?
Мне пофиг - у меня такого кода не бывает.