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

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

Поиск части строки [D6, Paradox]


Dim!S ©   (2003-03-04 03:41:00) 

Уважаемые мастера!
Как сделать так чтобы поиск велся по части строки.
Пример:
Есть поле Korres(текстовое). В нем есть: предприниматель(ЧП, част. пред. или просто без всего) Сидоров
Задача:
Необходимо организовать поиск по части строки и желательно без учета регистра символов. Как это лучше осуществить? Может кусочек кода у кого есть?

Спасибо.


VAleksey   (2003-03-06 10:18:00) [1]

Назнач условие фильтра, а потом методы датасета
FindFirst и FindNext


leonon   (2003-03-06 09:55:00) [2]

// Поиск нужной записи по полю от текущего положения
function TfrmSprav.FindRecord(aField : TField): boolean;
Var
B : TBookMark;
Splash : TForm;
begin
Result := False;
if InputQuery("Поиск", "Укажите значение для поля ""+aField.DisplayName+""", LastFindStr) then begin
Splash := ShowSplashWindow(Application.Icon,"Обработка данных. Подождите, пожалуйста...", False,
Application.MainForm);
Application.ProcessMessages;
Grid.DataSource.DataSet.DisableControls;
try
B := Grid.DataSource.DataSet.GetBookmark;
While Not Result and Not Grid.DataSource.DataSet.Eof do begin
Grid.DataSource.DataSet.Next;
Result := Pos(AnsiUpperCase(Trim(LastFindStr)),
AnsiUpperCase(Trim(Grid.DataSource.DataSet.FieldByName(aField.FullName).AsString))) <> 0;
end;
if Not Result then Grid.Datasource.Dataset.GotoBookmark(B);
finally
Splash.Free;
Grid.Datasource.Dataset.EnableControls;
end;
if Not Result then MsgBox("Внимание", "Запись не найдена!", mb_IconInformation + mb_Ok);
end;
end;


kaif   (2003-03-06 02:02:00) [3]

Делай через запрос TQuery. Через TTable не делай. Запросы такого рода в Paradox происходят очень быстро (из 3000 записей LIKE сработает за 50 миллисекунд). А через TTable будешь более 1 сек ждать.


denary   (2003-03-06 01:47:00) [4]

Locate с двумя параметрами - именно по части строки и без учета регистра символов. Наизусть их не помню, посмотри формат.


Соловьев   (2003-03-04 09:21:00) [5]

Событие onFilterRecord у TTable. Access := true когда у тебя выполняется нужное условие.


Наталия   (2003-03-04 07:15:00) [6]

Locate не пробовал?


aaa3aaa   (2003-03-04 07:09:00) [7]

Используется компонент TTable
тогда Filter
но ИМХО . Лучше б ты послушал
> Наталия © (04.03.03 06:06)

Потому как загоняешь себя в угол ограниченных возможностей.


Dim!S   (2003-03-04 06:31:00) [8]

Используется компонент TTable


Наталия   (2003-03-04 06:06:00) [9]

Используй запрос типа select ... from ... where UPPER(field1)LIKE "%СИДОРОВ%"


Наверх

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