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

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

Поиск по всем полям!!! [D7, Paradox]


Настенька ©   (2004-10-23 08:46:00) 

Сделала такую вещь. Есть один едит и dbgrid. С помощью запроса ищется по всем полям таблицы то, что введено в едит. Вот мой запрос:
на событие onchange у едита

var sql:string; i,kol:byte;
begin
Sql:='select * from table1 where ';
for kol:=0 to DBGrid1.Columns.Count-1 do
begin
Sql:=Sql+'cast (' +DBGrid1.Columns[kol].FieldName+ ' as varchar(30)) like "%'+edit1.text+'%"';
if kol < DBgrid1.Columns.Count-1 then sql:=sql+ ' or ';
end;
Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add(sql);
Q1.Open;

Тут все круто работает: но вот в чем проблема. Он все поля приводит к cast, но мне не надо, чтобы он приводил стринговые поля, так как в них и без cast прекрасно ищется. Что сделать?


ЮЮ   (2004-10-25 03:04:00) [1]

if стринговое поле then
 не приводить
else
 приводить

далеко не соответствует вашему

if целое поле then
 приводить
else
 не приводить

>но это не очень работает. что не так?
не очень - это как?


Настенька   (2004-10-24 08:55:00) [2]

я делала так:
Sql:='select * from table1 where ';
for kol:=0 to DBGrid1.Columns.Count-1 do
begin
if query1.fields[i].datatype=ftinteger then
Sql:=Sql+'cast (' +DBGrid1.Columns[kol].FieldName+ ' as varchar(30)) like "%'+edit1.text+'%"'
else Sql:=Sql+''+DBGrid1.Columns[kol].FieldName+' like "%'+edit1.text+'%"'
if kol < DBgrid1.Columns.Count-1 then sql:=sql+ ' or ';
end;

но это не очень работает. что не так?


Vlad   (2004-10-23 16:38:00) [3]


> Он все поля приводит к cast, но мне не надо, чтобы он приводил
> стринговые поля, так как в них и без cast прекрасно ищется.
> Что сделать?

Ну и в чем проблема? if then написать не можем?
А про DataType я вам кажется говорил.


DSKalugin   (2004-10-23 16:28:00) [4]

переписать процедуру поиска ВПРИЦИПЕ!
А механизм поиска построить на использовании функции Locate()


Наверх

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