powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация данных
7 сообщений из 7, страница 1 из 1
Фильтрация данных
    #39529700
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть БД Access (Клиент, Модель холодильников, Кол-во)

Клиент, модель, кол-во вносит в БД:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
  Form11.AddTotalOrder.SQL.Clear;
  Form11.AddTotalOrder.SQL.Add('INSERT INTO Order (Data, Client, Model, Quantity)');
  Form11.AddTotalOrder.SQL.Add(' VALUES (:Data, :Client, :Model, :Quantity)');

  Form11.AddTotalOrder.Parameters.ParamByName('Data').Value := (Form11.Label2.Caption); // - тут дата
  Form11.AddTotalOrder.Parameters.ParamByName('Client').Value := (Form11.DBLookupComboBox1.KeyValue); // - тут клиент
  Form11.AddTotalOrder.Parameters.ParamByName('Model').Value := (Form11.DBLookupComboBox2.KeyValue); // - тут модель
  Form11.AddTotalOrder.Parameters.ParamByName('Quantity').Value := (Form11.Edit1.Text); // - тут кол-во
  Form11.AddTotalOrder.ExecSQL;


Получилось

IdDataClientModelQuantity102.10.2017LGLGM300S123202.10.2017LGLGM300S+123302.10.2017LGLGM300SH123402.10.2017LG M400S123502.10.2017LG M400S+321602.10.2017LG M400SH111

В отдельной форме делаю вывод данных (фильтр) DBLookupComboBox1 - выбираю клиента, например - LGLG, в DBLookupComboBox2 - список доступных для данного клиента моделей их 3 согласно базе. Вроде все как бы ок, только вот если я выбираю в DBLookupComboBox1 - LG?, то в DBLookupComboBox2 - появляются сразу все 6 моделей. Понимаю, что это из-за того что LGLG содержит LG.

Вот сам фильтр:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
/////////////////// F I L T E R   C L I E N T -> M O D E L//////////////////////
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
  if Form1.DBLookupComboBox1.KeyValue = ' ' then
   begin
      Form1.ADOModel.Filtered := FALSE;
    end
  else
    begin
      Form1.ADOModel.Filter := '[Client] like '+QuotedStr('%'+Form1.DBLookupComboBox16.KeyValue+'%');
{      Form1.ADOModel.Filter := 'Client like %'+Form1.DBLookupComboBox16.KeyValue+'%';}
      Form1.ADOModel.Filtered := TRUE;

    end;

end;


то что за комментировано, это я пробовал несколько вариантов.

Просьба подсказать, как можно решить данную проблему.
...
Рейтинг: 0 / 0
Фильтрация данных
    #39529708
Dmitri Krizhanovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,

А если без "%"?
...
Рейтинг: 0 / 0
Фильтрация данных
    #39529712
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitri Krizhanovski,

+QuotedStr('%'+Form1.DBLookupComboBox16.KeyValue+'%') - такой вариант вроде как обязательный
...
Рейтинг: 0 / 0
Фильтрация данных
    #39529744
Dmitri Krizhanovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo,

т.е. ты даже не попробовал :)

Если у тебя в Form1.DBLookupComboBox16.KeyValue содержиться Client, то фильтр должен быть строго на равенство:
Код: pascal
1.
2.
3.
Form1.ADOModel.Filtered := False;
'Client=' + QuotedStr(Form1.DBLookupComboBox16.KeyValue);
Form1.ADOModel.Filtered := True;


А здесь у тебя ошибки нет?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
  if Form1.DBLookupComboBox1.KeyValue = ' ' then
  begin
    Form1.ADOModel.Filtered := FALSE;
  end
  else
  begin
    Form1.ADOModel.Filter := '[Client] like '+QuotedStr('%'+Form1.DBLookupComboBox16.KeyValue+'%');
    { Form1.ADOModel.Filter := 'Client like %'+Form1.DBLookupComboBox16.KeyValue+'%';}
    Form1.ADOModel.Filtered := TRUE;
  end;
end;

end;

...
Рейтинг: 0 / 0
Фильтрация данных
    #39529770
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitri Krizhanovski,

Да спасибо Вы правы все работает, вчера не было возможности проверить.
Может Вы подскажите, для ликбеза, а для чего используется символ % в - Form1.ADOModel.Filter := '[Client] like '+QuotedStr('%'+Form1.DBLookupComboBox16.KeyValue+'%'); ?
...
Рейтинг: 0 / 0
Фильтрация данных
    #39530208
egor555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxseo, % - это любые символы в SQL
...
Рейтинг: 0 / 0
Фильтрация данных
    #39530457
maxseo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egor555,

Спасибо за объяснение!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]