Andrey aka Master Слушай, за 15 дней можно прочитать весь HELP (F1) по TTable со словарем.
Есть методы ApplyRange, CancelRange, EditKey, EditRangeEnd, EditRangeStart, FieldByName, FindFirst, FindKey, FindLast, FindNearest, FindNext, FindPrior, GotoKey, GotoNearest, Locate, Lookup, SetFields, SetKey, SetRange, SetRangeEnd, SetRangeStart.
Выбирай на вкус и потребности.
Также можно прочитать про TQuery, и язык SQL.
Возможное решение для кучи эдитов.
function BuildWhere (AWhere, Astr : String) : String;
begin
if AWhere <> '' then Result := AWhere + ' AND ';
Result := Result + AStr;
end;
Query.Sql.Text := 'Select * from "MyCoolTable.dbf" where '
tmpWhere := '';
if edit1.text <> '' then tmpWhere := BuildWhere(tmpWhere, '(CoolField1='+edit1.text+')');
if edit2.text <> '' then begin tmpWhere := BuildWhere (tmpWhere, '(CoolField2='+edit2.text+')');
........
if edit10.text <> '' then begin tmpWhere := BuildWhere(tmpWhere, '(CoolField10='+edit10.text+')');
Query.Sql.Text := Query.Sql.Text +tmpWhere;
Если для строковых полей будешь делать поиск, тогда нужно писать так '(CoolField1='''+edit1.text+''')'
Можно конечно изголиться и сделать так чтобы условия поиска заполнялись при вводе данных, но это уже другой разговор.
Возражения, что я незнаю английского языка, не принимаются. Нужна будет информация и китайский изучишь.
Цитата: но в моей таблице максим 2000 колонок
Куда столько? ограничение в DBF в 256 колонок.
wyrd Цитата: Удаление стобцов из таблиц происходит сравнительно редко, и зачастую оно может отменить саму необходимость поиска
А что делать когда структура таблицы не изменилась, а позиции столбцов изменились?
А если новый столбец добавили в переди поискового? Например после 2-го, а старый 3-й был поисковым (теперь он 4-й)?
Так что закладываться на позицию столбца, это выкапывание ямы под самого себя. Обращение только по имени.
И если уж закладываться на позицию, тогда использовать именованые константы, а не числа. Чтобы в одном месте поменял, а изменения распространились везде.