Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > перестал работать Like


Автор: Exai1e 25.5.2007, 23:12
Здрасти. Возникла вот такая проблема
раньше все работало нормально, а потом в один прекрасный момент перестало... просто так... несчего вообще...

код
Код

procedure GoSearch;
var
  s : string;
begin
  MainForm.IBQuery1.Close;
  MainForm.IBQuery1.SQL.Clear;
  s := 'SELECT * FROM MEDICAMENTS WHERE UPPER(MEDNAME collate PXW_CYRL) LIKE ''%' + trim(AnsiUpperCase(MainForm.edSearch.Text))+'%''';
  MainForm.IBQuery1.SQL.Text := s;
  ShowMessage(s);
  MainForm.IBQuery1.Open;
end;


потом по нажатию на кнопку
Код

procedure TMainForm.SearchButtonClick(Sender: TObject);
begin
  GoSearch;
end;


неработает...
...
Код

  ShowMessage(s);

...


Выдает запрос без введенного текста в edSearch, т.е. в переменную 's' ничего какбудто незаносится
Спасибо

Автор: Rodman 26.5.2007, 12:44
Код

procedure GoSearch;
var
  s : string;
begin
  MainForm.IBQuery1.Close;
  MainForm.IBQuery1.SQL.Clear;
  MainForm.IBQuery1.SQL.Add('SELECT * FROM MEDICAMENTS WHERE UPPER(MEDNAME collate PXW_CYRL) LIKE ''%' + trim(AnsiUpperCase(MainForm.edSearch.Text))+'%''');
  MainForm.IBQuery1.Open;
  ShowMessage(MainForm.IBQuery1.Fields[1].asstring);
end;


сначала запрос открывать надо!!!

Автор: Exai1e 26.5.2007, 13:43
Rodman, все равно не работает :(
//Странно, раньше же все так работало smile

Автор: Rodman 26.5.2007, 14:37
Exai1e, проверь запрос в самой СУБД. если не пойдет, возможно он битый!!!

Автор: Deniz 28.5.2007, 06:13
Покажи что выводит ShowMessage(s);

Автор: SergeBS 28.5.2007, 07:52
Переделай хвост (пробел после 2-х апострофов):
Код

+'%'' ';


Автор: Exai1e 28.5.2007, 08:15
Deniz, http://img518.imageshack.us/img518/1684/31633568lk3.jpg


SergeBS, Всеравно не работает :(

Автор: SergeBS 28.5.2007, 12:51
Exai1e, 
Убедись, что MainForm.edSearch.Text - то что нужно. Получи его напрямую через showmessage.

Добавлено через 3 минуты и 10 секунд
Код

var
  s : ANSIstring;

Автор: Exai1e 28.5.2007, 16:39
SergeBS, Хмм странно, попробывал ShowMessage(вводимый текст), показывает что какбудто НЕЧЕГО не введено... О_о пусто... 
из за чего такое может быть ?...

Автор: Exai1e 28.5.2007, 17:35
Если запускать пошагово, то в edSearch.Text ничего вообще не заносится... хотя сам лично ввожу в него текст перед нажатием на кнопку

Автор: sw04 2.6.2007, 23:09

Код

SELECT * FROM MEDICAMENTS WHERE UPPER(MEDNAME collate PXW_CYRL) LIKE '%' + trim(AnsiUpperCase(MainForm.edSearch.Text))+'%';'

мб так?

Автор: Deniz 4.6.2007, 07:04
Форум глючил, ответов не видно.
Exai1e, 
Цитата

... то в edSearch.Text ничего вообще не заносится... 

с этим разобрался?
Попробуй вводить только латиницу или цифры.

Автор: Exai1e 4.6.2007, 07:37
Deniz, пробывал... непомогает, странно все это smile вроде вношу инфу а как будто и невношу smile

Добавлено через 52 секунды
Самое интересное что все работало, потом бах ! и перестало, просто с несчего

Автор: SergeBS 4.6.2007, 11:46
Exai1e, 
Ну так кончай морочиться. Где ты накосячил - искать будешь долго. Убей этот контрол и сделай с другим именем такой же. И косяк вылезет (если он где-то в обработке событий контрола), и поиск заработает.

Автор: Exai1e 4.6.2007, 18:45
SergeBS, Спасиб

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)