![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск части строки [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 "%СИДОРОВ%"