Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1190211725
azl
2007-09-19 18:22
2007.10.14
Как программно добавить новый пункт меню в PopupMenu?


2-1189928872
DimDim
2007-09-16 11:47
2007.10.14
Лишняя запятая в запросе


15-1189784352
Чайник
2007-09-14 19:39
2007.10.14
UpperCase для кириллицы


2-1189761258
Gaj
2007-09-14 13:14
2007.10.14
Кодировка при копировании полей таблицы BDE


2-1189868932
Tonich
2007-09-15 19:08
2007.10.14
Сервис





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский