Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.05.2012, 18:13
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию фильтры в DBGrid

Несколько дней мучаюсь с фильтрами, не пойму что я не так делаю, подскажите пожалуйста!!


Цитата:
if (edit1.Text<>'') then
begin
DBGrid1.DataSource.DataSet.Filter:='(IMSI LIKE '''+edit1.Text+'%'')';
DBGrid1.DataSource.DataSet.Filtered:=true;
end
else
DBGrid1.DataSource.DataSet.Filtered:=false;
в поле IMSI только цифры, работаю с датасетом и датасоурсом, IBExpert
Ответить с цитированием
  #2  
Старый 10.05.2012, 02:32
Аватар для darktmlr
darktmlr darktmlr вне форума
Прохожий
 
Регистрация: 12.07.2010
Адрес: Северодвинск
Сообщения: 19
Версия Delphi: 7, 2010
Репутация: 10
По умолчанию

Попробуй так
Filter:='IMSI LIKE '+Chr(39)+edit1.Text+'%'+Chr(39);
Chr(39) дает ' -(Апостраф)
Ответить с цитированием
  #3  
Старый 10.05.2012, 05:19
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Так что мучаетесь? Ошибка выходит или неправильно на ваш взгляд фильтруется? В чем проблема то?
__________________
Google в помощь
Ответить с цитированием
  #4  
Старый 10.05.2012, 08:45
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от darktmlr
Попробуй так
Filter:='IMSI LIKE '+Chr(39)+edit1.Text+'%'+Chr(39);
Chr(39) дает ' -(Апостраф)
Данное решение вообще работать не хочет.

В мое варианте все как бы работает, но ничего визуально не происходит.
Ответить с цитированием
  #5  
Старый 10.05.2012, 09:22
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

В целях эксперимента, замените:
Код:
DBGrid1.DataSource.DataSet.Filter:='(IMSI LIKE '''+edit1.Text+'%'')';
на:
Код:
DBGrid1.DataSource.DataSet.Filter:='(IMSI = ''qwerty'')';
и посмотрите, что будет. Если и на сей раз визуально ничего не поменяется, то программа просто не заходит в данный участок кода.
__________________
Google в помощь
Ответить с цитированием
  #6  
Старый 10.05.2012, 09:53
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Ildar-tsr
В целях эксперимента, замените:
Код:
DBGrid1.DataSource.DataSet.Filter:='(IMSI LIKE '''+edit1.Text+'%'')';
на:
Код:
DBGrid1.DataSource.DataSet.Filter:='(IMSI = ''qwerty'')';
и посмотрите, что будет. Если и на сей раз визуально ничего не поменяется, то программа просто не заходит в данный участок кода.
Так и есть, но почему так может быть? фильтр висит на кнопке
Ответить с цитированием
  #7  
Старый 10.05.2012, 09:59
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Киньте весь код, выполняемый при нажатии на кнопку.
__________________
Google в помощь
Ответить с цитированием
  #8  
Старый 10.05.2012, 10:11
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
procedure TfmStatzv.Button1Click(Sender: TObject);
begin
if (edit1.Text<>'') then
begin
DBGrid1.DataSource.DataSet.Filter:= '(IMSI = ''qwerty'')';
DBGrid1.DataSource.DataSet.Filtered:=true;
end
else
DBGrid1.DataSource.DataSet.Filtered:=false;


end;
Вот весь код
Ответить с цитированием
  #9  
Старый 10.05.2012, 10:58
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Встаньте на строку
Код:
if (edit1.Text<>'') then
и нажмите F5. Запустите программу, нажмите кнопку Button1, и дальше идите, наживая F8.
__________________
Google в помощь
Ответить с цитированием
  #10  
Старый 10.05.2012, 11:17
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию

Строка стала зеленой с меткой красным перечеркнутым кругом вместо красного круга, дальше никаких действий не происходило
Ответить с цитированием
  #11  
Старый 10.05.2012, 15:17
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию

помогите пожалуйста, очень нужно для диплома
Ответить с цитированием
  #12  
Старый 10.05.2012, 15:47
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Я не совсем понял, что вы там описали про зеленые крестики...
Делаем так (комментим весь ваш код и прописываем showmessage):
Код:
procedure TfmStatzv.Button1Click(Sender: TObject);
begin
  {if (edit1.Text<>'') then
    begin
      DBGrid1.DataSource.DataSet.Filter:= '(IMSI = ''qwerty'')';
      DBGrid1.DataSource.DataSet.Filtered:=true;
    end
  else
    DBGrid1.DataSource.DataSet.Filtered:=false;}
  ShowMessage('test');
end;
Нажмите на кнопку, отпишитесь вышло сообщение или нет.
__________________
Google в помощь
Ответить с цитированием
  #13  
Старый 10.05.2012, 15:50
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

тогда уж так:
Код:
  if DBGrid1.DataSource.DataSet.Filtered then
    ShowMessage(DBGrid1.DataSource.DataSet.Filter)
  else
    ShowMessage('!Filter');
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #14  
Старый 10.05.2012, 16:27
pobeda pobeda вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
тогда уж так:
Код:
  if DBGrid1.DataSource.DataSet.Filtered then
    ShowMessage(DBGrid1.DataSource.DataSet.Filter)
  else
    ShowMessage('!Filter');
выдало сообщение DBGrid1.DataSource.DataSet.Filter
Ответить с цитированием
  #15  
Старый 10.05.2012, 17:22
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Код:
procedure TfmStatzv.Button1Click(Sender: TObject);
begin
  if (edit1.Text<>'') then
    begin
      DBGrid1.DataSource.DataSet.Filtered:=false;
      DBGrid1.DataSource.DataSet.Filter:= '(IMSI LIKE '''+edit1.Text+'%'')';
      DBGrid1.DataSource.DataSet.Filtered:=true;
    end
  else
    DBGrid1.DataSource.DataSet.Filtered:=false;
end;
__________________
Google в помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:52.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter