Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
ВнизПодскажите в чем ошибка? Найти похожие ветки
← →
Mariya (2007-09-12 08:56) [0]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-имя, фильтр по обоим полям не работает, выдает ошибку. Фильтр задан не правильно. Заранее спасибо.
← →
Palladin © (2007-09-12 08:59) [1]
> Подскажите в чем ошибка?
А сама ошибка не подсказывает в чем она заключается?
← →
sniknik © (2007-09-12 09:08) [2]+
после составления фильтра получившуюся строку неплохо бы рассмотреть внимательно... глядишь и спрашивать станет нечего.
++
хозяйке на заметку:
работа фильтра(возможности) зависят от технологий(компонент. в какойто мере), работающее в одном для другого может быть ошибочно...
+++
база данный тоже имеет значение. никогда не спрашивай о базах не указав что используешь и чем пользуешься... совершенно верный ответ для одного для другого может быть ошибочным (и хорошо если просто ошибочным, а то в принципе рабочим но вредительским)
← →
Mariya (2007-09-12 09:27) [3]filter expression incorrectly terminated.
пытаюсь написать в дельфи, данные храняться в парадокс таблицах. в дельфи нарисовала форму чтобы просматривать, написала фильтр на фамилию, попросили и по имени тоже из найденных всех Иванновых, найти Васю :).
← →
Сергей М. © (2007-09-12 09:38) [4]
> Mariya (12.09.07 09:27) [3]
> выдает ошибку. Фильтр задан не правильно
И правильно выдает.
Потому что выражение, заданное значением tbmain.Filter, не является правильным.
У тебя это выражение сформировано вот такФамилия="Иванов*"Имя="Вася*"
а должно быть такФамилия="Иванов*" AND Имя="Вася*"
Найди три отличия)
← →
Mariya (2007-09-12 09:53) [5]if (strFilter <> "") then tbmain.Filter:= strFilter and "Arh_nomer="+QuotedStr(Edit2.Text+"*"); Так?
← →
Сергей М. © (2007-09-12 10:02) [6]
> Так?
А ты выполни после этого строчку ShowMessage(tbmain.Filter) и сразу увидишь, так оно или не так..
← →
Anatoly Podgoretsky © (2007-09-12 10:09) [7]А как ты попала в программирование, в наказание?
← →
Mariya (2007-09-13 14:37) [8]Здравствуйте! Это не наказание, а выбранный мой путь в жизни, но надо подучиться ( или НАУЧИТЬСЯ!!!), я разобралась, поиск по двум полям работает, только по порядку сначала вводим едит1, а затем едит2, наоборот не работает. Подскажите как сделать чтобы можно было и в обратном направлении это осуществлять?
← →
Сергей М. © (2007-09-13 14:41) [9]Так ты ж сама себе грабли и устроила в строчках
if Trim(Edit1.Text) <> "" then
иif Trim(Edit2.Text) <> "" then
)
← →
Mariya (2007-09-13 14:45) [10]Ну не знаю как иначе1 Подскажите, плз. И еще вопрос, как добавить третье поле? Ну очень нужно, посочувствуйте тому, кто отбывает наказание :)
← →
Сергей М. © (2007-09-13 14:52) [11]
> посочувствуйте тому, кто отбывает наказание
А ты думаешь здесь богадельня ?)
> Ну не знаю как иначе
Да просто убери эти проверки)
← →
clickmaker © (2007-09-13 14:53) [12]
> И еще вопрос, как добавить третье поле?
так же как второе
← →
Mariya (2007-09-13 14:56) [13]добавила как второе выдает ошибки! Убрать какие проверки?
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;
← →
Сергей М. © (2007-09-13 15:03) [14]
> Убрать какие проверки?
if Trim(EditN.Text) = "" then ..
← →
Mariya (2007-09-13 15:08) [15]У меня всего 2 едита + 2 комбобокса (в примере)+2 даты (период с ...- до...).
← →
Сергей М. © (2007-09-13 15:09) [16]
> Mariya (13.09.07 15:08) [15]
И что ?
← →
Mariya (2007-09-13 15:13) [17]Я не понимаю как программа будет понимать ЕдитН, какой заполняется, и что тогда нужно присваивать фильтру?
if Trim(Edit2.Text) <> "" then
if (strFilter<> "") then tbmain.Filter:=strFilter + "and" + "Arh_nom="+QuotedStr(Edit2.Text+"*").
вот здесь например будет едитН, что писать во второй строке?
← →
Сергей М. © (2007-09-13 15:25) [18]При первой проверке N=1 , при второй N=2, при энной равно "эн".
Это что, совсем непостижимо для самостоятельного понимания ?)
← →
Mariya (2007-09-13 15:43) [19]Логически это все я прекрасно понимаю, а как это сделать (написать) физически, используя процедуры, функции . . . знаний моих в дельфи не хватает, поэтому спрашиваю. Посмотрите, пожалуйста, код, который я писала второй раз, вы не могли бы его прокомментировать конкретно, какие там нужно внести изменения. Заранее спасибо.
← →
Mariya (2007-09-13 15:49) [20]Подскажите, возможно осуществить контекстный поиск? здесь же. На эти же поля? (*в*н*в=Иванов, Овчинников...)
← →
Сергей М. © (2007-09-13 15:53) [21]
> Логически это все я прекрасно понимаю, а как это сделать
> (написать) физически, используя процедуры, функции . . .
Т.е. ты "плаваешь" именно в языке как средстве реализации алгоритма ?
Тогда формализуй и приведи сюда требуемый тебе алгоритм, тогда и поможем тебе в его реализации в Делфи.
> какие там нужно внести изменения
Боюсь тебя огорчить, но место этому коду - в recycle"ре.
← →
Mariya (2007-09-13 16:05) [22]Мне поставили задачу, написать локальную базу данных. Я создала несколько парадокс таблиц, связала их, там словари, вот. Попросили написать поиск, чтобы могли по каким-то критериям им нужным вытащить из этой базы человека с такими критериями. Все просто:
на форме поиска: ДВГрид, где видны все поля главной таблицы (tbmain).
(где и должен быть результат поиска)
1) комбобокс1-фонд (там числовые значения 10,11,12,13)
2)фамилия
3)имя
4)дата заполнения карточки на это лицо (Data_s-в едит3 вводится, Data_po-вводится в едит4). Мне нужно чтобы пользователь мог вводить данные в эти 4 поля и программка из всей базы вытаскивала человека, у которого все эти поля совпали. Пока я сделала, что все поля ищут (фильтруют) по одному полю, мне нужно по всем. Я начала это делать, код начатого я как вопрос в чем ошибка и написала.
← →
Palladin © (2007-09-13 16:09) [23]
> Mariya (13.09.07 16:05) [22]
У тебя алгоритм спрашивали, а не задачу
← →
Palladin © (2007-09-13 16:12) [24]за 300 баксов напишу :) за 500 отдам даже с исходниками :)
← →
Mariya (2007-09-13 16:13) [25]Все это я пишу в боттоне, я понимаю логически, что если комбобокс не пустой, фильтровать значение по нужному, дальше запомнить это значение в переменной, дальше если эта переменная не пустая, и едит1 например не пустой, то фильтровать едит1 из найденных значений в комбобоксе (а не из всей базы снова)... Мне нужно прописать этот боттон, чтобы по всем полям искало, далее все мой задачи на этом и основываются. Если бы Вы мне помогли понять и подучили, мне бы это облегчило работу на многие месяцы, задачи у меня все аналогичные,загвоздка пока только в этом.
← →
Mariya (2007-09-13 16:16) [26]Palladin © (13.09.07 16:12) [24]
Это моя 3-х месячная зарплата...!!! А задач таких штук 50. Мне дешевле не работать... Но все равно спасибо за предложение...
← →
Anatoly Podgoretsky © (2007-09-13 16:24) [27]Mariya (13.09.07 16:05) [22]
filter := Критерий1 and Критерий3 ... and КритерийN
Критерии задаются так - ИмяПоля ОператорОтношения Значение
← →
Anatoly Podgoretsky © (2007-09-13 16:25) [28]
> Это моя 3-х месячная зарплата...!!!
Действительно дешевле не работать, это не зарплата а горе
← →
clickmaker © (2007-09-13 16:28) [29]
> [26] Mariya (13.09.07 16:16)
даю подсказки. пока бесплатно
1. Заведи массив имен полей
2. Положи контролы для ввода значений на отдельную панель, если на форме есть другие, не участвующие в фильтре
3. Для даты лучше TDateTimePicker - юзеру удобней будет
4. Задай им Tag от 0 до количества полей в массиве - 1 соответственно
5. В цикле от 0 до ControlsCount-1 контейнера пробегись по контролам и, если это TEdit, то QuotedText + "*", если TComboBox, то просто текст (число), если TDateTimePicker, то строковый вид даты. Перед этим обнули strFilter и в цикле добавляй ИмяПоляИзМассива по Tag + "=" + собственно значение, НЕ забывая перед вставлять " and ", если фильтр уже не пустой
← →
Mariya (2007-09-13 16:36) [30]
> Заведи массив имен полей
????
> Задай им Tag от 0 до количества полей в массиве - 1 соответственно
????!!!
Я ИДУ УВОЛЬНЯТЬСЯ! МНЕ ЭТО ВСЕ НИ О ЧЕМ НЕ ГОВОРИТ! ( :((( )
← →
clickmaker © (2007-09-13 16:39) [31]
> [30] Mariya (13.09.07 16:36)
а, ну тогда справочку почитай для начала или книжечку
задачка-то элементарная, чтоб сразу увольняться
то ли еще будет...
← →
Германн © (2007-09-13 16:40) [32]
> Mariya (13.09.07 16:36) [30]
>
>
Четвертые сутки пылает граница :-)
http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&search=Mariya
← →
Сергей М. © (2007-09-13 16:44) [33]
> ИДУ УВОЛЬНЯТЬСЯ! МНЕ ЭТО ВСЕ НИ О ЧЕМ НЕ ГОВОРИТ
Просто интересно - а когда тебя принимали на работу, какие требования к тебе как к специалисту предъявляли ?
И чем с твоей стороны были подкреплены твои потенции в плане этих требований, коль скоро тебе было оказано (авансом ?) столь высокое доверие ?
← →
Mariya (2007-09-13 16:49) [34]Передо мной стояли совершенно иные задачи, которые я могу позволить с грдостью сказать, я очень хорошо знаю!!!А сейчас понадобилось Дельфи, котрое я знаю из 10 пар лекций в институте!
← →
Mariya (2007-09-13 16:51) [35]Всем огромное спасибо! Кто ПЫТАЛСЯ мне помочь!
← →
Anatoly Podgoretsky © (2007-09-13 16:53) [36]> Сергей М. (13.09.2007 16:44:33) [33]
Какие требование при зарплате 100 баксов :-)
За что боролись, на то и на поролись.
← →
Anatoly Podgoretsky © (2007-09-13 16:53) [37]> Mariya (13.09.2007 16:36:30) [30]
И правильно сделаешь, неужели не найдешь зарплату хотя бы раза в три выше.
← →
clickmaker © (2007-09-13 16:59) [38]
> котрое я знаю из 10 пар лекций в институте!
10 пар недостаточно, чтобы узнать про массив?
← →
Palladin © (2007-09-13 17:05) [39]
> Mariya (13.09.07 16:49) [34]
а на кого ты училась то?
← →
Сергей М. © (2007-09-13 17:06) [40]Арбузолитейный, наверно, пыталась осилить)
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.048 c