![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск по подстроке [D6, dBase, FoxPro]
ttt_111 © (2006-08-02 14:50:00)Есть ли процедура позволяющая найти запись по подстроке :
например есть запись - ООО "Колобок", ее нужно найти по подстроке - Колобок.
alseos (2006-08-02 16:49:00) [1]Desdechado ©
Извини, я не понял, против какого дубляжа? (возможно я где-то затупил). И собственно, что и какому посту не противоречит?
alseos (2006-08-02 16:39:00) [2]
> Sergey13 © (02.08.06 16:14) [10]
> > [9] alseos © (02.08.06 15:53)
>
> Так автору нужна была "процедура в Делфи". А "в Делфи" кроме
> как перебором всех строк ничего не найдешь.
Не стану спорить. Я просто предложил свое решение поставленной задачи, которое работает на практке. Только и всего. Если кто-то может предложить решение проще и (или) быстрее, то мне это будет интересно.
Кроме того, компонент TQuery такой же компонент Delphi как TButton или TEdit, - следовательно все, что он может - может Delphi.
Desdechado (2006-08-02 16:24:00) [3]alseos © (02.08.06 16:21) [11]
Ничего не имею против, кроме как против дубляжа :)
Это ведь не противоречит моему посту.
alseos (2006-08-02 16:21:00) [4]
> Desdechado © (02.08.06 15:46) [8]
> Найти - это позиционироваться или выбрать?
> Выбор уже показали, позиционирование через Locate или перебором
> датасета со сравнением по условию.
Я подразумеваю, что в таблице-справочнике контрагентов (организаций) обычно бывает какой-то уникальный код или шифр (чаще цифровой). Этот код можно определить с помощью того фрагмента, который я привел. Код можно передать и в Locate.
Кроме всего прочего так получается быстрее, чем как-либо еще, особенно, когда в справочнике 15-30 тысяч записей (сам пробовал). Да и может такое статься, что этих "колобков" больше, чем один. Тогда пользователю можно легко предложить бы Я подразумеваю, что в таблице-справочнике контрагентов (организаций) обычно бывает какой-то уникальный код или шифр (чаще цифровой). Этот код можно определить с помощью того фрагмента, который я привел. Код можно передать и в Locate.
Кроме всего прочего так получается быстрее, чем как-либо еще, особенно, когда в справочнике 15-30 тысяч записей (сам пробовал). Да и может такое статься, что этих "колобков" больше, чем один. Тогда пользователю можно легко предложить выбрать одного из них, не так ли?
Sergey13 (2006-08-02 16:14:00) [5]> [9] alseos © (02.08.06 15:53)
Так автору нужна была "процедура в Делфи". А "в Делфи" кроме как перебором всех строк ничего не найдешь.
alseos (2006-08-02 15:53:00) [6]
> Sergey13 © (02.08.06 15:41) [6]
> > [3] ttt_111 (02.08.06 15:14)
>
> Pos - не подойдет?
Если использовать Pos, придется "вручную" обойти всю таблицу, что несколько "накладно" не так ли?
Если бы требовалось найти подстроку в строке - тогда конечно, а так написано:
> например есть запись- ООО "Колобок", ее нужно найти по
> подстроке - Колобок.
потому я и стал рассказывать, как искать записи (строки) в таблице.
Desdechado (2006-08-02 15:46:00) [7]Найти - это позиционироваться или выбрать?
Выбор уже показали, позиционирование через Locate или перебором датасета со сравнением по условию.
ttt_111 (2006-08-02 15:43:00) [8]Спасибо, все понятно.
Sergey13 (2006-08-02 15:41:00) [9]> [3] ttt_111 (02.08.06 15:14)
Pos - не подойдет?
alseos (2006-08-02 15:40:00) [10]Получается примерно следующее:
procedure TForm1.Button1Click(Sender: TObject);
Var Q:TQuery;
begin
Q:=TQuery.Create(nil);
Q.SQL.Text:='Select * from "c:\Sprav.Dbf" where nameoorg like ''%Колобок%''';
Q.Open;
// Здесь можно обращаться к Q как к обычной таблице
// стуктура которой, такая же, как и Spav.Dbf
Q.Free
end;
все ли понятно?
alseos (2006-08-02 15:20:00) [11]Я сам занимался подобной задачей некоторое время тому назад. Могу выложить открытые свои тексты (или их фрагменты), если интересно.
> Select * from [имя_таблицы] where [имя_столбца] like "%Колобок%"
выберет из таблицы (*.dbf) все записи, где встречается "Колобок".
ttt_111 (2006-08-02 15:14:00) [12]Процедура в Delphi
alseos (2006-08-02 15:00:00) [13]Не понял, в чем должна быть написана процедура в FoxPro или в Delphi?
В любом случае, проще всего:
Select * from [имя_таблицы] where [имя_столбца] like "%Колобок%"
Это, если я правильно понял вопрос.
Sergey13 (2006-08-02 14:56:00) [14]Есть, и не одна.