Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Table => Filter? [D7, dBase, FoxPro]


Страницы:   1 2

Jet ©   (2004-05-27 17:25:00) 

Нужно составить следующий фильтр для таблицы:
Имеется таблица .dbf (FoxPro) с полем Fam, Name и т.д.
Ее нужно отфильтровать по первым пяти буквам фамилии и трем первым
буквам имени, т.е. если есть записи:

1 Иванов Петр
2 Иванова Петр
3 Ивашкин Петр
4 Ивашкин Пятр

То считать одинаковыми записи 1 и 2:
(Ивано)в (Пет)р
(Ивано)ва (Пет)р

Но разными 1,3,4:

(Ивано)в (Пет)р
(Ивашк)ин (Пет)р
(Ивашк)ин (Пят)р

или 2,3,4

(Ивано)ва (Пет)р
(Ивашк)ин (Пет)р
(Ивашк)ин (Пят)р

На выходе должно быть:

1 Иванов Петр
3 Ивашкин Петр
4 Ивашкин Пятр

или

2 Иванов Петр
3 Ивашкин Петр
4 Ивашкин Пятр

Т.е. фактически вывести уникальные записи по первым 5 буквам фамилии и
первым 3 буквам имени. Помогите кто знает.


Vlad   (2004-05-27 17:47:00) [21]


> Sandman25+1   (27.05.04 17:43) [7]


> Зачем это все надо?

Похоже на лабораторную работу :-)

> Jet ©   (27.05.04 17:25)  

Если нужно именно фильтр, а не SQL, тогда Соловьев ©   (27.05.04 17:38) [6]
+
В Дельфи есть функция Copy, которая может вернуть тебе любой кусок строки.


Sandman25+1   (2004-05-27 17:43:00) [22]

Перечитал первый пост. Что-то я не то отвечал...
Нужно что-то типа
select *
 from t t1
 where not exists
   (select 1
      from t t2
    where substr(t1.name, 1, 3) = substr(t2.name, 1, 3)
      and substr(t1.family, 1, 5) = substr(t2.family, 1, 5)
      and t2.id > t1.id
   )
Но скорость будет ужасная.
Зачем это все надо?


Соловьев   (2004-05-27 17:38:00) [23]


> Так первые буквы не зивестны, если не взять запись. А сразу
> нельзя отфильтровать не используя буквы. К примеру :
> AnsiLeftStr(Fam,5) <> AnsiLeftStr(Fam,5)
> Что-то типа такого.

в OnFilterRecord - фантазия безгранична :)


Соловьев   (2004-05-27 17:37:00) [24]


> family like 'ИВАНО%' and name like 'ПЕТ%'

телепат:)
я и не знал что у него ФИО рассписано :)


Jet   (2004-05-27 17:36:00) [25]

Так первые буквы не зивестны, если не взять запись. А сразу нельзя отфильтровать не используя буквы. К примеру :
AnsiLeftStr(Fam,5) <> AnsiLeftStr(Fam,5)
Что-то типа такого.


Sandman25+1   (2004-05-27 17:33:00) [26]

Или
family like 'ИВАНО%' and name like 'ПЕТ%'


Jet   (2004-05-27 17:33:00) [27]

А поподробнее по примеру можно пожалуйста?


Соловьев   (2004-05-27 17:29:00) [28]

событие OnFileterRecord:
Accept := <условие>;
пишешь вместо что в голову прийдет :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо