Конференция "Начинающим" » Фильтрация в базе [D7, dBase, FoxPro, Paradox]
 
  • anton shestakov (26.01.09 16:55) [0]
    подскажите как произвести фильтрацию в бд не по первым буквам, а по последним, тоесть если мне надо найти фамилию по последним буквам! или даже по любым буквам! или при помощи фильтрации такое не возможно?
    Table1.FilterOptions:=[foCaseInsensitive];
    Table1.Filter:='name = '+''''+edit1.text+'*'+'''';
    Table1.Filtered:=true;
  • MsGuns © (26.01.09 18:44) [1]
    like
  • anton shestakov (26.01.09 19:44) [2]
    и куда like вписать?
  • Anatoly Podgoretsky © (26.01.09 19:45) [3]
    > anton shestakov  (26.01.2009 16:55:00)  [0]

    Нафига тогда не используешь SQL
  • anton shestakov (26.01.09 19:48) [4]
    Table1.FilterOptions:=[foCaseInsensitive];
    Table1.Filter:='name like '+''''+edit1.text+'*'+'''';
    Table1.Filtered:=true;
    так не работает
  • sniknik © (26.01.09 22:45) [5]
    > так не работает
    не все поддерживают, а вообще то работает... ну это также как сказать на машину, что она не работает хотя она ездит и ремонта не требует, а нужен самолет чтобы лететь. это чтобы понятнее было.
  • Германн © (27.01.09 01:57) [6]

    > ну это также как сказать на машину, что она не работает
    > хотя она ездит и ремонта не требует

    Это про Парадокс?
    :)
  • sniknik © (27.01.09 08:08) [7]
    > Это про Парадокс?
    > :)
    нет это вообще про движок а не формат файла, ведь это он фильтрацию делает (если она конечно вот в таком виде, а не самостоятельно реализована).
  • Виталий Панасенко (27.01.09 14:12) [8]
    Используй OnFilterRecord
  • anton shestakov (27.01.09 16:05) [9]
    После компиляции проекта и ввода в edite любой буквы, хоть первой, программа вылетает и пишется Priject 1.exe raised exception class EDBEngine Error with message 'Operation not application'
  • Виталий Панасенко (27.01.09 16:44) [10]

    > anton shestakov   (27.01.09 16:05) [9]


    > Виталий Панасенко   (27.01.09 14:12) [8]
    >
    > Используй OnFilterRecord
  • anton shestakov (28.01.09 16:19) [11]
    а что в OnFilterRecord тогда писать?
  • Anatoly Podgoretsky © (28.01.09 16:41) [12]
    > anton shestakov  (28.01.2009 16:19:11)  [11]

    В OnFilterRecord можно, что угодно писать, например

    accept := Random > 0.3;

    Это очень можное орудие.
  • anton shestakov (28.01.09 17:04) [13]
    а по моему случаю? (конечно извините может за детский вопрос, но я не разу этим не занимался) - произвести фильтрацию в бд не по первым буквам, а по последним, тоесть если мне надо найти фамилию по последним буквам! или даже по любым буквам!
  • anton shestakov (28.01.09 21:26) [14]
    использовал как и советовали OnFilterRecord - написал вот так Accept :=(Pos(Edit1.Text, DataSet['Name']) > 0);
    И вот теперь подскажите, что добавить в эту строчку, чтобы сделать фильтрацию нечувствительной к регистру!
    Заранее спасибо!
  • ЮЮ © (29.01.09 03:32) [15]
    Привести Edit1.Text и DataSet['Name'])  в выражении к одному регистру, например, использую UnsiUpperCase
  • Виталий Панасенко (29.01.09 08:49) [16]

    > anton shestakov   (28.01.09 21:26) [14]
    >
    > использовал как и советовали OnFilterRecord - написал вот
    > так Accept :=(Pos(Edit1.Text, DataSet['Name']) > 0);
    > И вот теперь подскажите, что добавить в эту строчку, чтобы
    > сделать фильтрацию нечувствительной к регистру!
    > Заранее спасибо!

    Лучше так не делать. Я об DataSet['Name']. При "пустом" (null) значении поля Name получишь исключение.. Лучше сделай так: DataSet.FieldByName('Name').AsString
  • anton shestakov (29.01.09 15:57) [17]

    > Привести Edit1.Text и DataSet['Name'])  в выражении к одному
    > регистру, например, использую UnsiUpperCase


    А поподробнее?
  • Медвежонок Пятачок © (29.01.09 16:46) [18]
    ShowMessage(AnsiUpperCase('НебОскреБы, небоСКребы, А я мАлЕнький тАКой....'))
  • anton shestakov (30.01.09 21:35) [19]
    такое ощущение, что никто ничего не знает! спросил, так никто ничего толком и не ответил точно, посмотри там, используй это!
  • Johnmen © (30.01.09 21:54) [20]
    У всех (ну кроме тебя) ощущение, что песочница в другом месте.
    Впрочем, есть ещё вариант про моск...
  • Германн © (31.01.09 01:07) [21]

    > anton shestakov   (30.01.09 21:35) [19]
    >
    > такое ощущение, что никто ничего не знает! спросил, так
    > никто ничего толком и не ответил точно, посмотри там, используй
    > это!

    Одно из воспоминаний моего детства:
    Мне лет 5-6. Самое начало 60-х. Я играю во дворе. Рядом на скамейке сидит женщина с маленьким ребенком на руках. Она берет ложкой из тарелки гречневую кашу, кладёт себе в рот и жуёт. Потом через некоторое время выдавливает в рот своему ребенку пережеванную кашу из своего рта! Я так и не понял зачем она это делает, хотя несколько раз спрашивал об этом у своей мамы.

    Так то ж был грудной ребенок! И времена были иные! Специализированного детского питания тогда не было.
    Может ты сам начнешь пережевывать, то что тебе дают?
  • bla (17.03.09 00:13) [22]
    Я из объяснений ничего не понял, OnFilterRecord тоже не помогло.
  • Sergey13 © (17.03.09 08:22) [23]
    > [22] bla   (17.03.09 00:13)

    Сочувствую. Но ради этого признания не стоило поднимать ветку двухмесячной давности.
  • D@nger (17.03.09 09:24) [24]
    Я тоже начинающий и  как то тоже столкнулся с такой же проблемой... Anatoly Podgoretsky уже посоветовал использовать событие OnFilterRecord я так и делал в своей программе... проверяй нужное условие фильтра в этой процедуре и если оно удовлетворяет запросу то accept:=true else accept:=false. Для проверки условия пользуйся процедурами и функциями для работы со строками... я использовал функцию pos которая выдает позицию подстроки в строке ... и если подстрока является окончанием (тут уж сам думай как это проверить) то accept:=true ... ну и все... только в процедуре поставь условие когда делать такую проверку потому что эта процедура будет выполнятся каждый раз при фильтровании...
  • Anatoly Podgoretsky © (17.03.09 10:13) [25]
    > D@nger  (17.03.2009 9:24:24)  [24]

    accept := Random > 0.8;
  • имя (04.04.09 00:08) [26]
    Удалено модератором
  • имя (04.04.09 00:09) [27]
    Удалено модератором
 
Конференция "Начинающим" » Фильтрация в базе [D7, dBase, FoxPro, Paradox]
Есть новые Нет новых   [134477   +43][b:0][p:0.001]