![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите в чем ошибка?
Mariya © (2007-09-12 08:56:00)var strFilter: string;
begin
tbmain.Filter := '';
if Trim(Edit1.Text) <> '' then
begin
tbmain.Filter := 'Фамилия='+QuotedStr(Edit1.Text+'*');
strFilter :=tbmain.Filter;
tbmain.Filtered:=True;
end;
if Trim(Edit2.Text) <> '' then
begin
if (strFilter <> '') then tbmain.Filter:= strFilter +'Имя='+QuotedStr(Edit2.Text+'*');
end;
результат у меня должен быть виден на DBGrid1. Edit1-вводим фамилию, в Edit2-имя, фильтр по обоим полям не работает, выдает ошибку. Фильтр задан не правильно. Заранее спасибо.
Anatoly Podgoretsky (2007-09-13 16:25:00) [41]
> Это моя 3-х месячная зарплата...!!!
Действительно дешевле не работать, это не зарплата а горе
Anatoly Podgoretsky (2007-09-13 16:24:00) [42]Mariya (13.09.07 16:05) [22]
filter := Критерий1 and Критерий3 ... and КритерийN
Критерии задаются так - ИмяПоля ОператорОтношения Значение
Mariya (2007-09-13 16:16:00) [43]Palladin © (13.09.07 16:12) [24]
Это моя 3-х месячная зарплата...!!! А задач таких штук 50. Мне дешевле не работать... Но все равно спасибо за предложение...
Mariya (2007-09-13 16:13:00) [44]Все это я пишу в боттоне, я понимаю логически, что если комбобокс не пустой, фильтровать значение по нужному, дальше запомнить это значение в переменной, дальше если эта переменная не пустая, и едит1 например не пустой, то фильтровать едит1 из найденных значений в комбобоксе (а не из всей базы снова)... Мне нужно прописать этот боттон, чтобы по всем полям искало, далее все мой задачи на этом и основываются. Если бы Вы мне помогли понять и подучили, мне бы это облегчило работу на многие месяцы, задачи у меня все аналогичные,загвоздка пока только в этом.
Palladin (2007-09-13 16:12:00) [45]за 300 баксов напишу :) за 500 отдам даже с исходниками :)
Palladin (2007-09-13 16:09:00) [46]
> Mariya (13.09.07 16:05) [22]
У тебя алгоритм спрашивали, а не задачу
Mariya (2007-09-13 16:05:00) [47]Мне поставили задачу, написать локальную базу данных. Я создала несколько парадокс таблиц, связала их, там словари, вот. Попросили написать поиск, чтобы могли по каким-то критериям им нужным вытащить из этой базы человека с такими критериями. Все просто:
на форме поиска: ДВГрид, где видны все поля главной таблицы (tbmain).
(где и должен быть результат поиска)
1) комбобокс1-фонд (там числовые значения 10,11,12,13)
2)фамилия
3)имя
4)дата заполнения карточки на это лицо (Data_s-в едит3 вводится, Data_po-вводится в едит4). Мне нужно чтобы пользователь мог вводить данные в эти 4 поля и программка из всей базы вытаскивала человека, у которого все эти поля совпали. Пока я сделала, что все поля ищут (фильтруют) по одному полю, мне нужно по всем. Я начала это делать, код начатого я как вопрос в чем ошибка и написала.
Сергей М. (2007-09-13 15:53:00) [48]
> Логически это все я прекрасно понимаю, а как это сделать
> (написать) физически, используя процедуры, функции . . .
Т.е. ты "плаваешь" именно в языке как средстве реализации алгоритма ?
Тогда формализуй и приведи сюда требуемый тебе алгоритм, тогда и поможем тебе в его реализации в Делфи.
> какие там нужно внести изменения
Боюсь тебя огорчить, но место этому коду - в recycle'ре.
Mariya (2007-09-13 15:49:00) [49]Подскажите, возможно осуществить контекстный поиск? здесь же. На эти же поля? (*в*н*в=Иванов, Овчинников...)
Mariya (2007-09-13 15:43:00) [50]Логически это все я прекрасно понимаю, а как это сделать (написать) физически, используя процедуры, функции . . . знаний моих в дельфи не хватает, поэтому спрашиваю. Посмотрите, пожалуйста, код, который я писала второй раз, вы не могли бы его прокомментировать конкретно, какие там нужно внести изменения. Заранее спасибо.
Сергей М. (2007-09-13 15:25:00) [51]При первой проверке N=1 , при второй N=2, при энной равно "эн".
Это что, совсем непостижимо для самостоятельного понимания ?)
Mariya (2007-09-13 15:13:00) [52]Я не понимаю как программа будет понимать ЕдитН, какой заполняется, и что тогда нужно присваивать фильтру?
if Trim(Edit2.Text) <> '' then
if (strFilter<> '') then tbmain.Filter:=strFilter + 'and' + 'Arh_nom='+QuotedStr(Edit2.Text+'*').
вот здесь например будет едитН, что писать во второй строке?
Сергей М. (2007-09-13 15:09:00) [53]
> Mariya (13.09.07 15:08) [15]
И что ?
Mariya (2007-09-13 15:08:00) [54]У меня всего 2 едита + 2 комбобокса (в примере)+2 даты (период с ...- до...).
Сергей М. (2007-09-13 15:03:00) [55]
> Убрать какие проверки?
if Trim(EditN.Text) = '' then ..
Mariya (2007-09-13 14:56:00) [56]добавила как второе выдает ошибки! Убрать какие проверки?
var strFilter, S: string;
begin
strFilter := '';
S:=VarToStr(DBLookupComboBox1.KeyValue);
if Trim(S) <> '' then
begin
tbmain.Filtered:=false;
tbmain.Filter:='Fond='+S;
strFilter :=tbmain.Filter;
tbmain.Filtered:=true;
end;
if Trim(Edit1.Text) <> '' then
begin
if (strFilter<> '') then tbmain.Filter:=strFilter + ' and '+'Imya='+QuotedStr(Edit1.Text+'*')
else
begin
tbmain.Filter:='Imya='+QuotedStr(Edit1.Text+'*');
tbmain.Filtered:=true;
strFilter:=tbmain.Filter;
end;
clickmaker (2007-09-13 14:53:00) [57]
> И еще вопрос, как добавить третье поле?
так же как второе
Сергей М. (2007-09-13 14:52:00) [58]
> посочувствуйте тому, кто отбывает наказание
А ты думаешь здесь богадельня ?)
> Ну не знаю как иначе
Да просто убери эти проверки)
Mariya (2007-09-13 14:45:00) [59]Ну не знаю как иначе1 Подскажите, плз. И еще вопрос, как добавить третье поле? Ну очень нужно, посочувствуйте тому, кто отбывает наказание :)
Сергей М. (2007-09-13 14:41:00) [60]Так ты ж сама себе грабли и устроила в строчках
if Trim(Edit1.Text) <> '' thenиif Trim(Edit2.Text) <> '' then
)