-
подскажите как произвести фильтрацию в бд не по первым буквам, а по последним, тоесть если мне надо найти фамилию по последним буквам! или даже по любым буквам! или при помощи фильтрации такое не возможно?
Table1.FilterOptions:=[foCaseInsensitive];
Table1.Filter:='name = '+''''+edit1.text+'*'+'''';
Table1.Filtered:=true;
-
like
-
и куда like вписать?
-
> anton shestakov (26.01.2009 16:55:00) [0]
Нафига тогда не используешь SQL
-
Table1.FilterOptions:=[foCaseInsensitive];
Table1.Filter:='name like '+''''+edit1.text+'*'+'''';
Table1.Filtered:=true;
так не работает
-
> так не работает
не все поддерживают, а вообще то работает... ну это также как сказать на машину, что она не работает хотя она ездит и ремонта не требует, а нужен самолет чтобы лететь. это чтобы понятнее было.
-
> ну это также как сказать на машину, что она не работает
> хотя она ездит и ремонта не требует
Это про Парадокс?
:)
-
> Это про Парадокс?
> :)
нет это вообще про движок а не формат файла, ведь это он фильтрацию делает (если она конечно вот в таком виде, а не самостоятельно реализована).
-
Используй OnFilterRecord
-
После компиляции проекта и ввода в edite любой буквы, хоть первой, программа вылетает и пишется Priject 1.exe raised exception class EDBEngine Error with message 'Operation not application'
-
> anton shestakov (27.01.09 16:05) [9]
> Виталий Панасенко (27.01.09 14:12) [8]
>
> Используй OnFilterRecord
-
а что в OnFilterRecord тогда писать?
-
> anton shestakov (28.01.2009 16:19:11) [11]
В OnFilterRecord можно, что угодно писать, например
accept := Random > 0.3;
Это очень можное орудие.
-
а по моему случаю? (конечно извините может за детский вопрос, но я не разу этим не занимался) - произвести фильтрацию в бд не по первым буквам, а по последним, тоесть если мне надо найти фамилию по последним буквам! или даже по любым буквам!
-
использовал как и советовали OnFilterRecord - написал вот так Accept :=(Pos(Edit1.Text, DataSet['Name']) > 0);
И вот теперь подскажите, что добавить в эту строчку, чтобы сделать фильтрацию нечувствительной к регистру!
Заранее спасибо!
-
Привести Edit1.Text и DataSet['Name']) в выражении к одному регистру, например, использую UnsiUpperCase
-
> anton shestakov (28.01.09 21:26) [14]
>
> использовал как и советовали OnFilterRecord - написал вот
> так Accept :=(Pos(Edit1.Text, DataSet['Name']) > 0);
> И вот теперь подскажите, что добавить в эту строчку, чтобы
> сделать фильтрацию нечувствительной к регистру!
> Заранее спасибо!
Лучше так не делать. Я об DataSet['Name']. При "пустом" (null) значении поля Name получишь исключение.. Лучше сделай так: DataSet.FieldByName('Name').AsString
-
> Привести Edit1.Text и DataSet['Name']) в выражении к одному
> регистру, например, использую UnsiUpperCase
А поподробнее?
-
ShowMessage(AnsiUpperCase('НебОскреБы, небоСКребы, А я мАлЕнький тАКой....'))
-
такое ощущение, что никто ничего не знает! спросил, так никто ничего толком и не ответил точно, посмотри там, используй это!
-
У всех (ну кроме тебя) ощущение, что песочница в другом месте.
Впрочем, есть ещё вариант про моск...
-
> anton shestakov (30.01.09 21:35) [19]
>
> такое ощущение, что никто ничего не знает! спросил, так
> никто ничего толком и не ответил точно, посмотри там, используй
> это!
Одно из воспоминаний моего детства:
Мне лет 5-6. Самое начало 60-х. Я играю во дворе. Рядом на скамейке сидит женщина с маленьким ребенком на руках. Она берет ложкой из тарелки гречневую кашу, кладёт себе в рот и жуёт. Потом через некоторое время выдавливает в рот своему ребенку пережеванную кашу из своего рта! Я так и не понял зачем она это делает, хотя несколько раз спрашивал об этом у своей мамы.
Так то ж был грудной ребенок! И времена были иные! Специализированного детского питания тогда не было.
Может ты сам начнешь пережевывать, то что тебе дают?
-
Я из объяснений ничего не понял, OnFilterRecord тоже не помогло.
-
> [22] bla (17.03.09 00:13)
Сочувствую. Но ради этого признания не стоило поднимать ветку двухмесячной давности.
-
Я тоже начинающий и как то тоже столкнулся с такой же проблемой... Anatoly Podgoretsky уже посоветовал использовать событие OnFilterRecord я так и делал в своей программе... проверяй нужное условие фильтра в этой процедуре и если оно удовлетворяет запросу то accept:=true else accept:=false. Для проверки условия пользуйся процедурами и функциями для работы со строками... я использовал функцию pos которая выдает позицию подстроки в строке ... и если подстрока является окончанием (тут уж сам думай как это проверить) то accept:=true ... ну и все... только в процедуре поставь условие когда делать такую проверку потому что эта процедура будет выполнятся каждый раз при фильтровании...
-
> D@nger (17.03.2009 9:24:24) [24]
accept := Random > 0.8;
-
Удалено модератором
-
Удалено модератором