Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Подскажите в чем ошибка?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.025 c
15-1189669246
Vlad Oshin
2007-09-13 11:40
2007.10.14
Идея написать программку - статистика футбола, например


3-1180945677
Oleg_teacher
2007-06-04 12:27
2007.10.14
Как извлечь рисунок jpeg


1-1185952348
Dmitry_177
2007-08-01 11:12
2007.10.14
Как сделать чтобы Edit имелл фокус при запуске


4-1176093941
VladSel
2007-04-09 08:45
2007.10.14
Delphi ,сотовый телефон и AT команды


15-1189615414
OSokin
2007-09-12 20:43
2007.10.14
С днем программиста!