Mos Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 Найти игрушки, которые подходят детям от 1 до 3 лет.Собственно это и нужно найти в базе ( в базе есть поле "Возрастные границы", в ней указывается значение. Например: 2..5 (от 2 лет до 5 лет).Какую процедуру написать для кнопки "Поиск"? Ссылка на комментарий
JSTQ Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 Для кнопки поискTable1.Filtered=false;Table1.Filter="((vozrast>2) and (vozrast<5))";Table1.Filtered=true; Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 Mos=))) жжошь шмаляй еще.я одно не понимаю где такую траву берем.вот надо что-то, а сами даже не понимают чего. в вопросе как правило половина ответа.иначе только телепаты осилят этот путь.может быть и такselect a.* from tablename a where birthday a.between 2 and 5 хотя через параметры вернее. но думаю нет смысла о них писать, не так ли? Ссылка на комментарий
JSTQ Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 select a.* from tablename a where birthday a.between 2 and 5 Это уже запрос пошел, я думаю автору нужна простая фильтрация? Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 JusticeДа, фильтрацияcoderНу я вапще не айс в этом деле))Нужно как можно проще))Table1.Filtered=false;Table1.Filter="((vozrast>2) and (vozrast<5))";Table1.Filtered=true;Перед этим в "варе" писать ничего не нужно?и в этом примере, как я понял, поиск пашет только в том случае, если в поле только один символ, т.е. к примеру "5". Не так ли?Но у меня в поле написано так: "2..5", т.е. для 2,3,4,5 лет Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 автору нужна простая фильтрация?мы не телепаты.если у автора выборка в мульон записей то ... какая фильтрация на клиенте.хотя так потом и пишут везде.зы один на собеседовании показывал "работу" c бд. долго крутилось все через фильтры для отчёта. на вопрос - а чего не сиквелом. ответ просто пять: "специфика моей задачи такова, что реализовать её с помощью эскуэль запросов невозможно"человек про group by не знал. Ссылка на комментарий
JSTQ Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 и в этом примере, как я понял, поиск пашет только в том случае, если в поле только один символ, т.е. к примеру "5". Не так ли?В том что я написал - больше двух и меньше пяти. Можно совершенно безболезненно добавить в условии равно человек про group by не знал.Порой какого бреда не накодишь - черт ногу сломит - и все от незнания элементарных для кого-то вещей, что уж тут поделаешь. Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 JusticeРугается на первую строчку твоего кода, курсор после знака равно.Что-то нужно было в var записать? Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 чего ругает ...выкладывать нужно:= Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 Товарисчи, забыл самое главное, что первое значение вводиться в Edit1, а второе в Edit2. И кнопка "батон", по ней и производится фильтрация.И диапазон может меняться, т.е. не 2..5, а например 1..3, 1..2 и.т.д.Код будет таким?Table1.Filtered=false;Table1.Filter="((vozrast>Edit1.Text) and (vozrastTable1.Filtered=true;Добавлено спустя 14 минут 3 секунды:И ещё вопрос, как среди столбца найти наибольшее значение?Вопрос про фильтрацию не закрыт Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 Товарисчи, забыл самое главное,жжошь ...Table1.Filter="((vozrast>Edit1.Text) and (vozrastтаким не будет 100%сам посмотри, что за фильтр у тебя внимательноу тебя сравнивается со строкой Edit1.Textvozrast>Edit1.Text, а должно быть со знаниемTable1.Filter:=Format('((vozrast>%s) and (vozrast<%s))',[Edit1.Text,Edit2.Text]);где то такДобавлено спустя 1 минуту 29 секунд:как среди столбца найти наибольшее значение?где то такselect max(fieldname) from tablename Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 coderРаботает, но как то не так))у меня три записи в таблице:1..32..52..6Фильтрую по таким пораметрам:1..2 - фильтрует (осталось 1..3)3..4 - не фильтрует ( а ведь подходят и 2..5 и 2..6)Добавлено спустя 35 секунд:Хм(для справки)... у меня в поле написано: "2..5" (с точками) Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 Mosмы не телепаты что у тебя... писать в конце чего у тебя это смешно.у меня в поле написано: "2..5" (с точками)это нужно было писать вначале. запомни в вопросе половина ответа. иначе тебе никто не поможет, а разбираться в следующий раз в твоем потоке сознания может быть совсем не интересноесли у тебя такие странные записи, то пиши фильтр такTable1.Filter:=Format('((vozrast="%s..%s"))',[Edit1.Text,Edit2.Text]); Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 coderперечитай первый пост *16в базе есть поле "Возрастные границы", в ней указывается значение. Например: 2..5Щас попробуюДобавлено спустя 2 минуты 48 секунд:coderеррор Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 Table1.Filter:=Format('((vozrast="%s..%s"))',[Edit1.Text,Edit2.Text]);он не будет работать на вложенный.в общем странный формат записи у тебя.что бы его отфильтровать нужно разбирать каждую запись, а это уже велосипед.и через фильтр тут никак, разве через событие и каждую запись раскладывать.переделай формат хранения и все будет проще т.е. так как и должно бытьт.е. раздели на два поля Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 coderможешь попроще написать про нахождение максимального числа? Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 еррор заменяй на " на две ' Ссылка на комментарий
Mos Опубликовано 22 апреля, 2010 Автор Жалоба Поделиться Опубликовано 22 апреля, 2010 еррор заменяй на " на две 'Я щас пробну разделить на два поля. Ссылка на комментарий
coder Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 попроще написатьповерь, это самое простое.тебе сейчас расскажут, что можно:1. отсортировать и взять "верхнее" значение2. пробежать сравнивая3. еще чего ...но сиквел это самое простое. Ссылка на комментарий
JSTQ Опубликовано 22 апреля, 2010 Жалоба Поделиться Опубликовано 22 апреля, 2010 нахождение максимального числа?Form1.Table1.Close();Form1.Query1.Close();Form1.DataSource1.DataSet:=Form1.Query1;Form1.Query1.SQL->Clear();Form1.Query1.SQL->Add("Select max(a.fieldname) from tablename");Form1.Query1.Open();Form1.QuickRep1.Preview();Что то типа тогоЕще в QuickRep надо будет правильно параметры раскидать Ссылка на комментарий
Lucky Опубликовано 24 апреля, 2010 Жалоба Поделиться Опубликовано 24 апреля, 2010 А кто придумал такое оригинальное хранение интервала?Обычно используется 2 поля: минимальная и максимальная граница интервала.Например, если таблицу обозвать Games и интервал определить полями MinAge, MaxAge, то запрос может выглядеть так:SELECT *FROM GamesWHERE (:MinA BETWEEN MinAge AND MaxAge) OR (:MaxA BETWEEN MinAge AND MaxAge) где :MinA и :MaxA - входные параметры, определяющие возрастные границы. Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти