Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2010, 16:36   #1
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
Радость Поиск без учета регистра

Здравствуйте. Помогите пожалуйста решить проблему с поиском. Недавно начал изучать работу с БД в делфи, по немногу разбираюсь но недавно встрял и ни как не могу разобраться. Есть код с помощью которого осуществляется поиск в таблице, НО поиск идет нормально только если условие задано точ в точ как в условии. Вот часть кода:

Код:
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
  if RadioButton6.Checked then begin
 fam:=Edit1.Text;
    if fam <> '' 
    then
       begin
         with form1.Query2 do begin
           Close;      
           SQL.Clear;   
           SQL.Add(' SELECT DISTINCT BKK,AVTZNAK,AVTOR,P_DAN,M_IZD,IZDATELSTVO,Data,Kol_STR,Person');
           SQL.Add('FROM ":kollej:kniga.DB"');
           SQL.Add('WHERE');
           SQL.Add('(AVTOR = "'+ fam + '")');
           SQL.Add('ORDER BY BKK,AVTZNAK,AVTOR,P_DAN,M_IZD,IZDATELSTVO,Data,Kol_STR,Person');
           Open;        
         end;

         if form1.Query2.RecordCount <> 0 then
           form1.DataSource1.DataSet:=form1.Query2 
            else begin
              ShowMessage('Нет данных');
              form1.DataSource1.DataSet:=form1.Table2;
            end;
       end;
       end;
Скажите пожалуйста что нужно добавить (ну кроме мозгов мне в голову ) чтобы запрос проходил без учета регистра или по частям слова.

Последний раз редактировалось Stilet; 26.04.2010 в 08:07.
MSD вне форума Ответить с цитированием
Старый 24.04.2010, 16:54   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

LowerCase(string) - нижний регистр
UpperCase(string) - верхний регистр
Trim(string) - убирает "лишние" пробелы
maLoy*508 вне форума Ответить с цитированием
Старый 25.04.2010, 01:56   #3
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от maLoy*508 Посмотреть сообщение
LowerCase(string) - нижний регистр
UpperCase(string) - верхний регистр
Trim(string) - убирает "лишние" пробелы
Спасибо. Но как это можно использовать здесь? И работает ли с кирилицей?

Спасибо разобрался, но еще хочу спросить, проходят только жесткие условия поиска, например если пишеш "книга" то и находится книга не зависимо от регистра, а хотелость бы еще чтобы поиск был более гибким, наприме слово книга можно было бы найти и задав в условии поиска "книг" или кн* и.т.д. Подскажите куда копать мастера. Спасибо.

Последний раз редактировалось Stilet; 26.04.2010 в 08:07.
MSD вне форума Ответить с цитированием
Старый 26.04.2010, 07:09   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
а хотелость бы еще чтобы поиск был более гибким, наприме слово книга можно было бы найти и задав в условии поиска "книг" или кн* и.т.д. Подскажите куда копать мастера
используй %LIKE%

а по первому вопросу:
используй UPPER в запросе
Код:
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
if RadioButton6.Checked then begin
fam:=Edit1.Text;
if fam <> ''
then
begin
with form1.Query2 do begin
Close;
SQL.Clear;
SQL.Add(' SELECT DISTINCT BKK,AVTZNAK,AVTOR,P_DAN,M_IZD,IZDAT ELSTVO,Data,Kol_STR,Person');
SQL.Add('FROM ":kollej:kniga.DB"');
SQL.Add('WHERE');
SQL.Add('(AVTOR = UPPER'+ QuotedStr(fam) +')');
SQL.Add('ORDER BY BKK,AVTZNAK,AVTOR,P_DAN,M_IZD,IZDAT ELSTVO,Data,Kol_STR,Person');
Open;
end;
dron-s вне форума Ответить с цитированием
Старый 28.04.2010, 15:12   #5
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Спасибо и еще один маленький момент. после выполнения запроса поля в DBGrid не дают редактироваться.... ( В чем причина? Что добавить в запрос?
MSD вне форума Ответить с цитированием
Старый 28.04.2010, 15:47   #6
bezOn
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 51
По умолчанию

в Gride можно редактировать если набор данных - TTable
если идёт выборка через TQuery, то grid идёт как просмотр.

Хотя вродь можно как-то делать, чтобы через SELECT можно было редактировать...
bezOn вне форума Ответить с цитированием
Старый 28.04.2010, 21:23   #7
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

а как? ) может есть подсказки?
MSD вне форума Ответить с цитированием
Старый 28.04.2010, 22:22   #8
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
в Gride можно редактировать если набор данных - TTable
мдя... в каком учебнике ты это прочитал?
MSD
используй TDataSet (ADOCommand, IBDataSet) и пиши запрос как на выборку так и на редактирование, т.е. Select и Update
dron-s вне форума Ответить с цитированием
Старый 28.04.2010, 22:41   #9
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

если идёт выборка через TQuery то сделать ни чего нельзя? надо переделывать? (( А если попробовать добавить TUpdateSQL?

Последний раз редактировалось MSD; 29.04.2010 в 01:20.
MSD вне форума Ответить с цитированием
Старый 29.04.2010, 08:04   #10
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

можешь использовать TIBUpdateSQL, можешь TIBDataSet, можешь в этом же кверике динамически выполнять запрос на изменение данных и переоткрывать НД тем же запросом на выборку, можешь использовать хранимки TIBStoredProc
вариантов валом... выбирай любой
dron-s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск без учета регистра Cartman18 БД в Delphi 2 15.10.2009 15:18
Lookup без учета регистра ИВАНьКа Общие вопросы C/C++ 1 30.08.2009 12:48
Locate без учета регистра символов _SERGEYX_ БД в Delphi 2 09.08.2007 09:52
Проверка текста без учета регистра John_chek Общие вопросы Delphi 8 08.06.2007 08:50
Поиск без учёта регистра Маркъ Общие вопросы Delphi 4 15.03.2007 19:28