Конференция "Базы" » поиск по вхождению [D7]
 
  • lancomm © (17.07.13 13:02) [0]
    Добрый день, ковыряю свой первый проектик, сильно не ругайте? Извините за техническую безграмотность.
    Есть база данных Access, на форме при помощи ADO connection, Table и Data Source отображаются поля в DBGrid. С добавление и удалением записей поигрался, реализовал простой поиск через  ADOQuery, привожу пример
    procedure TForm2.Button1Click(Sender: TObject);
    begin
    datamodule1.ADOQuery1.Active :=False;
    datamodule1.ADOQuery1.SQL.Clear;
    datamodule1.ADOQuery1.SQL.Add('SELECT*');
    datamodule1.ADOQuery1.SQL.Add('FROM sey1');
    datamodule1.ADOQuery1.SQL.Add('WHERE Тип LIKE '''+Edit4.Text+'''');
    datamodule1.ADOQuery1.SQL.Add('or Модель LIKE '''+Edit4.Text+'''');
    datamodule1.ADOQuery1.SQL.Add('or Цена LIKE '''+Edit4.Text+'''');
    datamodule1.ADOQuery1.SQL.Add('or Фирма LIKE '''+Edit4.Text+'''');
    datamodule1.ADOQuery1.Active := true;
    form9.ShowModal;
    end;


    Ищет как вы поняли по полям Тип, Модель и т.д
    Хотелось бы поиск не только по целому слову, но и по вхождению в слово, к примеру в поле Тип есть запись "Простой", а есть запись "Просто", хотелось вы чтобы при вводе Просто в Edit находил обе записи, гугл выдал код


    SELECT * FROM Таблица WHERE [ПолеФирмы] LIKE "*" & [Введите подстроку названия] & "*"


    после LIKE мне непонятно как реализуется, или подскажите как правильно реализовать такой поиск
    Спасибо
  • sniknik © (17.07.13 13:10) [1]
    > гугл выдал код
    все правильно, но * редко уже используется поменяй на %.
  • Плохиш © (17.07.13 13:10) [2]
    Из справки к D7
    Like Memo LIKE '%filters%' Nein Verhält sich wie SQL-92 ohne die ESC-Klausel. Bei Anwendung auf BLOB-Felder legt FilterOptions fest, ob die Groß-/Kleinschreibung berücksichtigt wird.

  • lancomm © (17.07.13 13:31) [3]
    Спасибо, но мне непонятен участок
    nullLIKE "%" & [Введите подстроку названия] & "%"


    как мне это к моему Edit добавить
  • Плохиш © (17.07.13 13:51) [4]
    Изучение чего-либо надо начинать с основ. В основы программирования, в частности, входят операторы и их использование.
  • lancomm © (17.07.13 13:58) [5]
    Спасибо, с эдитом поторопился, если не сложно просто объясните синтаксис этой строки
    SELECT * FROM Таблица WHERE [ПолеФирмы] LIKE "*" & [Введите подстроку названия] & "*"
  • sniknik © (17.07.13 14:00) [6]
    это вижуал бейсик, конкатенация строк там так делается.

    > объясните синтаксис этой строки
    объясни, что не не понятно... не говори, что "все".
  • lancomm © (17.07.13 14:32) [7]
    ну как я понял
    SELECTом со знаком * мы указываем что выбирать (столбец), в данном случае звездочка означает все столбцы, FROM "Имя_таблицы" где выбирать, WHERE не совсем понимаю, тоже как бы выбор столбца. Далее после LIKE непонятен синтаксис
  • sniknik © (17.07.13 14:42) [8]
    > тоже как бы выбор столбца. Далее после LIKE непонятен синтаксис
    не выбор столбца, а условие - выбирать если "ПолеФирмы"(имя поля) похоже на составленная строка...
    синтаксис после LIKE  чисто VB в дельфи не работает... см. лучше справку по дельфи. тем более если это из VB акцесса (есть разница) то это не просто строка, а фактически вызов окна ввода значения с заголовком "Введите подстроку названия".
  • Плохиш © (17.07.13 15:17) [9]

    > lancomm ©   (17.07.13 14:32) [7]

    http://msdn.microsoft.com/en-us/library/ms179859.aspx
 
Конференция "Базы" » поиск по вхождению [D7]
Есть новые Нет новых   [119693   +144][b:0][p:0.001]