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

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

Чтоб при вводе запроса небыло подвязки к регистру? [D7, Paradox]


Страницы:   1 2

Starcom ©   (2005-09-05 16:10:00) 

Привет Мастера!

При таком раскладе, при вводе фамилии с большой буквы (Петров) запрос выполняется
т.к в Бд Paradox фамилия так и записана.

Как мне сделать так чтоб при вводе фамилии с маленькой буквы запрос тоже выполнялся?
т.е при вводе небыло подвязки к регистру.

Желательна врезка к уже имеюшемуся коду...!

var
   fam: string[30];
begin
   fam:=InputBox('Поиск Сотрудника в Базе данных',
                 'Укажите Фамилию и щелкните на OK.', '');
   if fam <> '' // пользователь ввел фамилию
   then  // проверяем на предмет пустого ввода
   Query1.SQL.Add(fam) {Назначаем свойству SQL текст fam}
   else
    begin
     MessageDlg('Вы не ввели Фамилию, попробуйте ещё раз!', mtError,[mbOk], 32);
     exit;
     end;
      begin
        with DbElek.Query1 do begin
          Close;       // закрыть файл-результат выполнения предыдущего запроса
          SQL.Clear;   // удалить текст предыдущего запроса
          // записываем новый запрос в свойство SQL
          SQL.Add('SELECT Fam, Name, Otch, Dol, Adr, Dtel, Stel, Tabn, Staj');
          SQL.Add('FROM ":Список:spisok.db"');
          SQL.Add('WHERE');
          SQL.Add('(Fam = "'+ fam + '")');
          SQL.Add('ORDER BY Name, Fam');
          Open;         // активизируем выполнение запроса
          StatusBar1.Panels[2].Text :='';
          StatusBar1.Panels[2].Text :='Поиск Завершен!';
        end;

        if Query1.RecordCount <> 0 then
             DataSource1.DataSet:=Query1 // отобразить результат выполнения запроса
           else begin
             MessageDlg('В Базе Данных, нет данной Фамилии!', mtInformation,[mbOk], 32);
             DataSource1.DataSet:=Table1;
           end;
      end;
end;

С Уважением Starcom! ;)


Starcom   (2005-09-09 20:11:00) [21]

Всё бы да ничего но при внесении изменений в запрос
по совету:
----------
Shaman_ ©   (05.09.05 17:31) [2]

SQL.Add('(Fam = "'+ fam + '")');
заменить на
SQL.Add('(Upper(Fam) = :Fam)');
Params.ParamByName('Fam').AsString := AnsiUpperCase(Fam);

---------------------------------------------------------
Перестали выполнятся запросы к базе данных с некоторыми фамилиями:
Тка..., Пол..., в чём может быть проблема?

С Уважением Starcom! :(


Starcom   (2005-09-05 20:41:00) [22]

Спасибо всем огромное! Всё получилось!

С Уважением Starcom! :)


Shaman_   (2005-09-05 17:31:00) [23]

SQL.Add('(Fam = "'+ fam + '")');
заменить на
SQL.Add('(Upper(Fam) = :Fam)');
Params.ParamByName('Fam').AsString := AnsiUpperCase(Fam);


Val   (2005-09-05 16:15:00) [24]

1. применить функцию Upper при сравнении в запросе или ей подобную.
2. заменить конкатенацию на параметры. К вопросу не относится, но является хорошиим стилем, как минимум.


Страницы:   1 2

Наверх

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