Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Поиск по подстроке   Найти похожие ветки 

 
ttt_111   (2006-08-02 14:50) [0]

Есть ли процедура позволяющая найти запись по подстроке :
например есть запись - ООО "Колобок", ее нужно найти по подстроке - Колобок.


 
Sergey13 ©   (2006-08-02 14:56) [1]

Есть, и не одна.


 
alseos ©   (2006-08-02 15:00) [2]

Не понял, в чем должна быть написана процедура в FoxPro или в Delphi?

В любом случае, проще всего:

Select * from [имя_таблицы] where [имя_столбца] like "%Колобок%"

Это, если я правильно понял вопрос.


 
ttt_111   (2006-08-02 15:14) [3]

Процедура в Delphi


 
alseos ©   (2006-08-02 15:20) [4]

Я сам занимался подобной задачей некоторое время тому назад. Могу выложить открытые свои тексты (или их фрагменты), если интересно.


> Select * from [имя_таблицы] where [имя_столбца] like "%Колобок%"


выберет из таблицы (*.dbf) все записи, где встречается "Колобок".


 
alseos ©   (2006-08-02 15:40) [5]

Получается примерно следующее:
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;


все ли понятно?


 
Sergey13 ©   (2006-08-02 15:41) [6]

> [3] ttt_111   (02.08.06 15:14)

Pos - не подойдет?


 
ttt_111   (2006-08-02 15:43) [7]

Спасибо, все понятно.


 
Desdechado ©   (2006-08-02 15:46) [8]

Найти - это позиционироваться или выбрать?
Выбор уже показали, позиционирование через Locate или перебором датасета со сравнением по условию.


 
alseos ©   (2006-08-02 15:53) [9]


> Sergey13 ©   (02.08.06 15:41) [6]
> > [3] ttt_111   (02.08.06 15:14)
>
> Pos - не подойдет?


 Если использовать Pos, придется "вручную" обойти всю таблицу, что несколько "накладно" не так ли?
 Если бы требовалось найти подстроку в строке - тогда конечно, а так написано:

> например есть запись - ООО "Колобок", ее нужно найти по
> подстроке - Колобок.

потому я и стал рассказывать, как искать записи (строки)  в таблице.


 
Sergey13 ©   (2006-08-02 16:14) [10]

> [9] alseos ©   (02.08.06 15:53)

Так автору нужна была "процедура в Делфи". А "в Делфи" кроме как перебором всех строк ничего не найдешь.


 
alseos ©   (2006-08-02 16:21) [11]


> Desdechado ©   (02.08.06 15:46) [8]
> Найти - это позиционироваться или выбрать?
> Выбор уже показали, позиционирование через Locate или перебором
> датасета со сравнением по условию.


  Я подразумеваю, что в таблице-справочнике контрагентов (организаций) обычно бывает какой-то уникальный код или шифр (чаще цифровой). Этот код можно определить с помощью того фрагмента, который я привел. Код можно передать и в Locate.
  Кроме всего прочего так получается быстрее, чем как-либо еще, особенно, когда в справочнике 15-30 тысяч записей (сам пробовал). Да и может такое статься, что этих "колобков" больше, чем один. Тогда пользователю можно легко предложить бы   Я подразумеваю, что в таблице-справочнике контрагентов (организаций) обычно бывает какой-то уникальный код или шифр (чаще цифровой). Этот код можно определить с помощью того фрагмента, который я привел. Код можно передать и в Locate.
  Кроме всего прочего так получается быстрее, чем как-либо еще, особенно, когда в справочнике 15-30 тысяч записей (сам пробовал). Да и может такое статься, что этих "колобков" больше, чем один. Тогда пользователю можно легко предложить выбрать одного из них, не так ли?


 
Desdechado ©   (2006-08-02 16:24) [12]

alseos ©   (02.08.06 16:21) [11]
Ничего не имею против, кроме как против дубляжа :)
Это ведь не противоречит моему посту.


 
alseos ©   (2006-08-02 16:39) [13]


> Sergey13 ©   (02.08.06 16:14) [10]
> > [9] alseos ©   (02.08.06 15:53)
>
> Так автору нужна была "процедура в Делфи". А "в Делфи" кроме
> как перебором всех строк ничего не найдешь.


Не стану спорить. Я просто предложил свое решение поставленной задачи, которое работает на практке. Только и всего. Если кто-то может предложить решение проще и (или) быстрее, то мне это будет интересно.

Кроме того, компонент TQuery такой же компонент Delphi как TButton или TEdit, - следовательно все, что он может - может Delphi.


 
alseos ©   (2006-08-02 16:49) [14]

Desdechado ©
 Извини, я не понял, против какого дубляжа? (возможно я где-то затупил). И собственно, что и какому посту не противоречит?



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.056 c
15-1158522329
Yegorchic
2006-09-17 23:45
2006.10.08
Что-то странное случилось с флэшкой...


6-1147572005
Delphi5.01
2006-05-14 06:00
2006.10.08
Работа с cookie в компоненте TWebBrowser (считывание, учтановка)


3-1154415551
NotGooDP
2006-08-01 10:59
2006.10.08
Работа с Insert Into...Values с использованием потоков


9-1137021348
Buffer
2006-01-12 02:15
2006.10.08
GLScene Buffer Как узнать видна ли такая то точка или нет?


1-1156455983
DevilDevil
2006-08-25 01:46
2006.10.08
Безопасное аварийное завершение приложения