0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 12

Ошибка тут Recordset.Filter := FilterText;

06.04.2017, 13:50. Показов 3146. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем вот такой фильтр он работает.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
procedure TForm1.Edit1Change(Sender: TObject);
var s1, s2, s3:string;
begin
 
s1:='Наименования';
s2:='Бренд';
s3:='';
 
if (form1.ComboBox2.Text=s1) and (form1.ComboBox3.Text=s2)
then
  begin
  Form1.ADOQuery1.Filtered := false;
  Form1.ADOQuery1.Filter := 'Центр like %'+Form1.Edit1.Text+'%';
  Form1.ADOQuery1.Filtered := True;
  end
  else
  if (form1.ComboBox2.Text<>s1) and (form1.ComboBox3.Text=s2)
   then
    begin
    Form1.ADOQuery1.Filtered := false;
    Form1.ADOQuery1.Filter := 'наименования like %'+Form1.ComboBox2.Text+'% and Центр like %'+Form1.Edit1.Text+'%';
    Form1.ADOQuery1.Filtered := True;
    end
    else
      if (form1.ComboBox2.Text=s1) and (form1.ComboBox3.Text<>s2)
       then
        begin
        Form1.ADOQuery1.Filtered := false;
        Form1.ADOQuery1.Filter := 'бренд like %'+Form1.ComboBox3.Text+'% and Центр like %'+Form1.Edit1.Text+'%';
        Form1.ADOQuery1.Filtered := True;
        end
          else
          begin
          Form1.ADOQuery1.Filtered := false;
          Form1.ADOQuery1.Filter := 'наименования like %'+Form1.ComboBox2.Text+'% and бренд like %'+Form1.ComboBox3.Text+'% and Центр like %'+Form1.Edit1.Text+'%';
          Form1.ADOQuery1.Filtered := True;
          end
 
end;
НО Если в поле есть значение то программа работает.
а
Если поле будет пустое то выдает такая ошибка. "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом."

нужно сделать так чтобы при
Delphi
1
Form1.Edit.text='';
небыло этой ошибки и просто ничего не происходило и фильтр не сбрасывался и оставался в своем положении.

есть еще кнопка сброса
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button2Click(Sender: TObject);    // Кнопка сброса фильтра
 
begin
    Form1.ComboBox3.Text:='Бренд';        // Очистка
    Form1.ComboBox2.Text:='Наименования';        // Очистка
    Form1.Edit1.Text:='Центр';
    Form1.Edit6.Text:='';
    Form1.Edit7.Text:='';
    Form1.ADOQuery1.Filtered :=false;
    Form1.ADOQuery1.SQl.Clear;
    Form1.ADOQuery1.SQl.Add('select * from sklad');
    Form1.ADOQuery1.Open
end;
вот такая каша, когда я ее жму то все нормально обнуляется и ошибки нет. т.к. в поле появляться текст. а если его там нет о ошибка. Помогите советом.

ругается сюда
Delphi
1
2
3
4
5
6
7
8
9
procedure TCustomADODataSet.ActivateTextFilter(const FilterText: string);
begin
  try
    Recordset.Filter := FilterText;  // <=СЮДА
  except
    CursorPosChanged;
    raise;
  end;
end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2017, 13:50
Ответы с готовыми решениями:

Ошибка: Filter property cannot be used for detail tables
ошибка помогите

Ошибка: Filter expression incorrectly terminated
Помогите исправить ошибку. unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,...

Свойства Filter и Sort в ADODB.Recordset
Вопрос: Почему при создании рекордсета на основе запроса из базы и добавления в него новых записей через AddNew можно и отфильтровать и...

8
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
06.04.2017, 14:22
все ваши фильтры нужно засунуть в SQL запрос в раздел WHERE
и что-то мне подсказывает, что LIKE %xxx% нужно заменить на ='xxx'
1
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 12
06.04.2017, 15:16  [ТС]
я пытался сделать это через SQL но запутался. т.к. через раз работают запросы потому что нужно в одном запросе объединить несколько а через union all работает не корректно.
Тут то все работает просто смущает ошибка. когда поле пустое.

Добавлено через 5 минут
Цитата Сообщение от krapotkin Посмотреть сообщение
что-то мне подсказывает, что LIKE %xxx% нужно заменить на ='xxx'
Нет. т.к. сразу идет поиск по первым символам которые я ввожу. а не целиком значение.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
06.04.2017, 16:02
где тут несколько ?
SQL
1
SELECT * FROM sklad WHERE xxxxxx
где xxxxxx точно совпадает с тем, что вы пишете в filter
если вы правильно заполняете filter то и where будет верным
0
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 12
07.04.2017, 10:08  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
где тут несколько ?
SQL
Выделить код
1
SELECT * FROM sklad WHERE xxxx
где xxxxxx точно совпадает с тем, что вы пишете в filter
если вы правильно заполняете filter то и where будет верным
Да фильтр то работает.. просто мешает ошибка которая появляется если поле будет пустое. Читал где-то что фильтр начинает бесконечный цикл. так вот как его отключить когда поле едит пустое.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.04.2017, 13:35
filtered:=edit.text<>''
?
0
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 12
07.04.2017, 15:30  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
filtered:=edit.text<>''
?
И? ставил я это в конце цикла. не помогло. либо я что то делаю не так.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.04.2017, 21:48
Лучший ответ Сообщение было отмечено Glo0m как решение

Решение

в конце чего?
я пропустил какие-то циклы?
0
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 12
17.04.2017, 09:17  [ТС]
В общем проблема рещена. нужно было перелопатить код и убрать пару ошибок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2017, 09:17
Помогаю со студенческими работами здесь

Как задать в recordset.filter'е отрицание?
Вопрос об отрицании. Т.е. если фильтр поставить в таком варианте: recordset.filter= ' поле1 LIKE '%aa%' ' всё работает, если же хочу...

Редактирование поля: Recordset.edit recordset.Fields('поле') = Text1.text Recordset.update
Есть Recordset базы mdb, некоторые поля в базе пустые. Т.е. Recordset.Fields ('поле') возвращает Null. Когда пытаюсь отредактировать запись...

Проблемы с кодом Recordset.AddNew() Recordset(0) = '01/02/2002' Recordset.Update()
Recordset.AddNew() Recordset(0) = '01/02/2002' Recordset.Update() //----------дает результат 1 февраля 2002 Recordset.AddNew() ...

Передать в recordset результат SQL на основе другого recordset
Начнём с того, что пытаюсь я эту штуку сделать в Excel на ADODB. Поэтому раздел форума должен быть правильный. Задача - собрать данные...

Разница между recordset.cancel и recordset.cancelupdate
Здравствуйте! Если есть какая-либо инфорация по поводу вышеназванных методов объекта Recordset в ADO - поделитесь Заранее благодарен


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru