На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
  
> Delphi: Подскажите поиск по базе
    Подскажите как Зделать поиск по базе данных если я ввожу в Edit1 и мне надо чтобы точно я ввёл в поле Edit1 нашлось в поле базы
    Сообщение отредактировано: vot -
      if Table1.Locate(SomeFieldName,Edit1.Text,[]) then ShowMessage('Запись найдена !');
        Дважды щелкнуть по Эдиту и написать:

        edit1.Text:=AnsiUpperCase (edit1.Text);
        TTable.SetKey;
        TTable.FieldByName('  тут пишеш имя поля по которому искать   ').AsString:=Edit1.Text;

        Как только начинаеш вводить сразу идет поиск. (особый шик что без кнопки  ;D);
          2Lexus: Да, но ведь база может быть огромной... и соответственно поиск может занимать уйму времени...

          2All: Как произвести поиск через ADO по части слова находящемся в любом месте... т.е. например: есть база с одним полем "модели" и строками "BMV M3", "BMV M5", "Mercedes 320", "BMV Z3", ..... мне надо найти все записи где есть цифра "3" или буква "M"...
          Спасибо!
            BDQ: насчет скорости ты ошибаешся т.к. я достал БД телефонов и адресо своего города и написал прогу под нее, так вот у меня именно такой поиск и я незамечаю задержки. Потому что допустим ты набрал цифру "4", он покажет тебе первыйже номер начинающийся с нее, а не все существующие с первой цифрой "4".
              Цитата Lexus, 16.02.03, 18:03:26
              BDQ: насчет скорости ты ошибаешся т.к. я достал БД телефонов и адресо своего города и написал прогу под нее, так вот у меня именно такой поиск и я незамечаю задержки. Потому что допустим ты набрал цифру "4", он покажет тебе первыйже номер начинающийся с нее, а не все существующие с первой цифрой "4".


              Я называю это контекстным поиском. Когда-то я тоже написал телефонный справочник для своего города. Но добавил еще такую функциональную возможность, что-бы пользователь ChekBox-м  мог переключать с режима контекстного поиска, на режим фильтрации, который осуществляется методом SetRange:

              procedure TfMain.Edit1Change(Sender: TObject);
              begin
               if Edit1.Text <> ''
                 then begin
                   if Length(Edit1.Text) <= 60
                     then begin
                         if ChekBox.Cheked
                           then begin
                             fDm.tTel.CancelRange;
                             fDm.tTel.SetRange([Edit1.Text],[Edit1.Text+'яя']);
                           end
                           else begin
                             fDm.tTel.Locate('Phone', Edit1.Text,[loCaseInsensitive, loPartialKey]);
                           end;
                     end;
                 end
                 else begin
                   if ChekBox.Cheked then fDm.tTel.CancelRange;
                   fDm.tTel.First;
                 end;
              end;
              Сообщение отредактировано: _pegas -
                И все же подскажите как в Delphi через ADO найти запись "Hammer" введя "mm"...
                  Цитата BDq, 18.02.03, 03:29:56
                  И все же подскажите как в Delphi через ADO найти запись "Hammer" введя "mm"...


                  В ADO ничего быстрее квери не работает... Если по полю что ты ищешь есть индекс то работать будет пракически мгновенно при любых размерах (у меня на 50Gb таблице (MS SQL Server )во много миллионов рекордов при количестве пользователей несколько сотен подобные квери идут меньше секунды)

                  ExpandedWrap disabled
                    <br>Select top 1 * From MyTable<br>Where MyField like '\%mm\%'<br>

                  Сообщение отредактировано: Vit -
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0252 ]   [ 15 queries used ]   [ Generated: 4.05.24, 04:47 GMT ]