Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработчик события OnFilterRecord 
:(
    Опции темы
Heathen
  Дата 19.11.2002, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Здравствуйте !
      Можно ли в обработчике события OnFilterRecord задать фильтрацию на неполное совпадение?
           Я делал так:
   
   Accept:=POS(Edit3.Text,DataSet['name'])>0;-по идее должно вып. условие:
     "содержимое Edit3.Text входит как часть ст. name, но выдается ошибка на несовпадение типа.
                 Заранее спасибо!
PM MAIL   Вверх
МММ
Дата 19.11.2002, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 18.6.2002

Репутация: нет
Всего: 1



Должно работать!!!
возможно тебе надо сделать так
Accept:=POS(Edit3.Text,DataSet['name'].asstring)>0
или
Accept:=POS(Edit3.Text,DataSet['name'].value)>0


--------------------
PM MAIL   Вверх
Heathen
  Дата 19.11.2002, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Должно, но не работает !
выдает Variant does not reference an automation object.
PM MAIL   Вверх
Heathen
Дата 20.11.2002, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Вот какую штуку я выяснил:
        если таблица в квери одна: Select * From Table1-то все окей, а вот если в квери прописано объединение таблиц:  Select * From Table1
                                           Union All
                                            Select * From Table2
                                           Union All
                                            Select * From Table3
                                           - тогда
 Accept:=(POS(Edit3.text,DataSet['name'])>0);-не работает, жаль...
PM MAIL   Вверх
Medved
Дата 20.11.2002, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Используй SQL-ный оператор LIKE.....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Heathen
Дата 20.11.2002, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



А можно чуточку подробней?
          Как исп. LIKE?
PM MAIL   Вверх
Medved
  Дата 20.11.2002, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Самому описывать лень, поэтому держи выдержку из книги:

ОПЕРАТОР LIKE
LIKE применим только к полям типа CHAR или VARCHAR (здесь имеется в виду, что только с символьными полями, а не с числовые), с которыми он используется чтобы находить подстроки. Т.е. он ищет поле символа чтобы видеть, совпадает ли с условием часть его строки. В качестве условия он использует групповые символы(wildkards) - специальные символы которые могут соответствовать чему-нибудь. Имеются два типа групповых символов используемых с LIKE:

* символ подчеркивания ( _ ) замещает любой одиночный символ. Например, 'b_t' будет соответствовать словам 'bat' или 'bit', но не будет соответствовать 'brat'.

* знак процента (%) замещает последовательность любого числа символов (включая символы нуля). Например '%p%t' будет соответствовать словам 'put', 'posit', или 'opt', но не 'spite'.

Давайте найдем всех заказчиков чьи имена начинаются с G ( вывод показывается в Рисунке 5.7 ):

      SELECT
         FROM Customers
         WHERE cname LIKE 'G%';


          ===============  SQL Execution Log ============
         |                                                                                    
         | SELECT *                                                                      
         | FROM  Customers                                                            
         | WHERE cname LIKE 'G';                                                  
         | =============================================
         |   cnum     cname    city     rating    snum    
         |  ------   --------  ------    ----   ------    
         |   2002     Giovanni Rome       200     1003    
         |   2004     Grass    Berlin     300     1002    
         |                                               |
           =============================================
Рисунок 5. 7: SELECT использует LIKE с %

LIKE может быть удобен если вы ищете им или другое значение, и если вы не помните как они точно пишутся. Предположим что вы неуверенны как записано по буквам им одного из ваших продавцов Peal или Peel. Вы можете просто использовать ту часть которую вы знаете и групповые символы чтобы находить все возможные пары ( вывод этого запроса показывается в Рисунке 5.8 ):

      SELECT *
         FROM Salespeople
         WHERE sname LIKE 'P _ _ l %';

Групповые символы подчеркивания, каждый из которых представляет один символ, добавят только два символа к уже существующим 'P' и 'l' , поэтому им наподобие Prettel не может быть показано. Групповой символ ' % ' - в конце строки необходим в большинстве реализаций если длина пол sname больше чем число символов в имени Peel ( потому что некоторые другие значения sname - длиннее чем четыре символа ). В таком случае, значение пол sname , фактически сохраняемое как им Peel, сопровождается рядом пробелов. Следовательно, символ 'l' не будет рассматриваться концом строки. Групповой символ ' % ' - просто соответствует этим пробелам. Это необязательно, если пол sname имеет тип - VARCHAR.


          ===============  SQL Execution Log ============
         |                                                
         | SELECT *                                      
         | FROM  Salespeople                              
         | WHERE sname LIKE ' P  1% ';                    
         | ==============================================
         |   snum      sname         city         comm    
         | ------    ----------   -----------   -------  
         |   1001      Peel         London        0.12    
         |                                              
          ===============================================
Рисунок 5.8: SELECT использует LIKE с подчеркиванием (_)

А что же Вы будете делать если вам нужно искать знак процента или знак подчеркивания в строке? В LIKE предикате, вы можете определить любой одиночный символ как символ ESC. Символ ESC используется сразу перед процентом или подчеркиванием в предикате, и означает что процент или подчеркивание будет интерпретироваться как символ а не как групповой символ. Например, мы могли бы найти наш sname столбец где присутствует подчеркивание, следующим образом:

         SELECT *
            FROM Salespeople
            WHERE sname LIKE '%/_%'ESCAPE'/';
С этими данными не будет никакого вывода, потому что мы не включили никакого подчеркивания в им нашего продавца. Предложение ESCAPE определяет '/ ' как символ ESC. Символ ESC используемый в LIKE строке, сопровождается знаком процента, знаком подчеркивания, или знаком ESCAPE, который будет искаться в столбце, а не обрабатывать- с как групповой символ. Символ ESC должен быть одиночным символом и применяться только к одиночному символу сразу после него.

В примере выше, символ процента начала и символ процента окончания обрабатываются как групповые символы; только подчеркивание предоставлено само себе.

Как упомянуто выше, символ ESC может также использоваться самостоятельно. Другими словами, если вы будете искать столбец с вашим сим- волом ESC, вы просто вводите его дважды. Во-первых это будет означать что символ ESC "берет следующий символ буквально как символ", и во-вторых что символ ESC самостоятелен. Имеется предыдущий пример который пересмотрен чтобы искать местонахождение строки '_/' в sname столбце:

    SELECT *
       FROM Salespeople
       WHERE sname LIKE ' % /_ / / %'ESCAPE'/';

Снова не будет никакого вывода с такими данными. Строка сравнивается с содержанием любой последовательности символов (%), сопровождаемых символом подчеркивания ( /_ ), символом ESC ( // ), и любой последовательностью символов в конце строки ( % ).


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
AntonSaburov
Дата 20.11.2002, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



А может, эта, типа :D, книжку почитать. Например:
http://informix.com.ua/download.htm

GRUBBER.ZIP - Книга Мартина Грубера "Понимание SQL"
PM MAIL WWW ICQ   Вверх
Medved
Дата 20.11.2002, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата

А может, эта, типа , книжку почитать. Например:
http://informix.com.ua/download.htm

GRUBBER.ZIP - Книга Мартина Грубера "Понимание SQL"


Может типа и почитай.... наверняка будет полезно..... да еще не один раз, чтобы запомнить....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Heathen
  Дата 20.11.2002, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Всем большое спасибо за помощь!
           
                    Special thank Pegas! :D
             
Пойду почитаю...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0812 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.