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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2016, 16:55   #21
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
ADOTable.Filtered:=False;
s:='';
if Trim(EditNaim.Text)<>'' then s:=Format('tovName LIKE ''%s%%'' AND ',[Trim(EditNaim.Text)]);
if Combobox1.ItemIndex>0 then s:=s+Format('counts %s %d AND ',[ComboBox1.Items.Strings[Combobox1.ItemIndex],StrToIntDef(Trim(Edit2.Text),0)]); //в Combobox1 в первой строке - без фильтра
// и т.д.
if s<>'' then begin
  ADOTable.Filter:=Copy(s,1,Length(s)-5);
  ADOTable.Filtered:=True;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.05.2016, 17:12   #22
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
так пробуйте
Код:
if Length(Edit2.Text) > 0 then filtr:='counts '+Combobox1.Items.Strings[Combobox1.ItemIndex]+' '+Edit2.Text;
1) вы пытались число со строкой сравнить
2) Код с поста #2, 4 строка она там не просто так.(а из свойства текст все удалите)
Всё равно такая ошибка...
EgorKa1 вне форума Ответить с цитированием
Старый 18.05.2016, 17:16   #23
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
ADOTable.Filtered:=False;
s:='';
if Trim(EditNaim.Text)<>'' then s:=Format('tovName LIKE ''%s%%'' AND ',[Trim(EditNaim.Text)]);
if Combobox1.ItemIndex>0 then s:=s+Format('counts %s %d AND ',[ComboBox1.Items.Strings[Combobox1.ItemIndex],StrToIntDef(Trim(Edit2.Text),0)]); //в Combobox1 в первой строке - без фильтра
// и т.д.
if s<>'' then begin
  ADOTable.Filter:=Copy(s,1,Length(s)-5);
  ADOTable.Filtered:=True;
end;
Может у меня что-то с программой не то, но ошибка точно такая же, вот:
Снимок1111.PNG
EgorKa1 вне форума Ответить с цитированием
Старый 18.05.2016, 17:51   #24
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Дык и написано, что для подчиненной таблицы фильтрацию применить нельзя. Она видимо связана с другим датасетом отношением Master-Detail
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.05.2016, 19:30   #25
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дык и написано, что для подчиненной таблицы фильтрацию применить нельзя. Она видимо связана с другим датасетом отношением Master-Detail
можно прогу скину в которой так сделано с подчиненной таблицей.?
Да можете вы поймете что да как.

Последний раз редактировалось EgorKa1; 19.05.2016 в 08:29.
EgorKa1 вне форума Ответить с цитированием
Старый 18.05.2016, 19:40   #26
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ну если можно - делай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.05.2016, 08:23   #27
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну если можно - делай
Вот эта программа:
http://rgho.st/6s7zhbhM7
Посмотрите пожалуйста.
Может знаете как сделать главную таблицу и подчиненную через ADOQuery?
А то больше всего что из-за MasterFields нельзя вообще производить фильтрацию.

Последний раз редактировалось EgorKa1; 19.05.2016 в 08:38.
EgorKa1 вне форума Ответить с цитированием
Старый 19.05.2016, 09:42   #28
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

можно по ключу связать в
Код:
procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
begin

end;
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 19.05.2016, 13:57   #29
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
можно по ключу связать в
Код:
procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
begin

end;
В общем я сделал.
ADOTable поменял на ADODataSet.
Фильтрация по текстовому полю идет.
А вот по тому что выбираю в Combobox1 + Edit2 то не фильтрует, а выводит просто все записи и ошибку: "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом."

Последний раз редактировалось EgorKa1; 19.05.2016 в 17:55.
EgorKa1 вне форума Ответить с цитированием
Старый 19.05.2016, 17:59   #30
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Всё, сделал.
Вот код кому нужно:
Код:
procedure TForm1.BitBtn9Click(Sender: TObject);
var s,filtr, add:string;
begin
ADODataSet2.Filtered:=False;
s:='';
if Trim(Edit1.Text)<>'' then s:=Format('tovName LIKE ''%s%%'' AND ',[Trim(Edit1.Text)]);
if Combobox1.ItemIndex>=0 then s:=s+Format('counts %s %d AND ',[ComboBox1.Items.Strings[Combobox1.ItemIndex],StrToIntDef(Trim(Edit2.Text),0)]); //в Combobox1 в первой строке - без фильтра
// и т.д.
if s<>'' then begin
  ADODataSet2.Filter:=Copy(s,1,Length(s)-5);
  ADODataSet2.Filtered:=True;
end;
end;
Тема закрыта.
EgorKa1 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с фильтрацией vr-frost БД в Delphi 4 29.04.2009 12:50
Помогите люди! SweetKiss Фриланс 4 19.12.2008 00:21