Я хочу изменить наш поиск, так как он немного хакерский.
В настоящее время это работает так:
- Пользователь вводит текст в текстовое поле, например Volvo и начинает поиск.
- Этот поиск с помощью SQL всех сообщений, содержащих Volvo.
- Результатом является список из 2 столбцов, BoldID и DisplayValue.
- BoldID - это просто уникальный номер для идентификации объекта в базе данных.
- DisplayValue - это то, что пользователь видит в списке результатов.
- Каждая строка в наборе результатов идентифицируется номером строки в списке пользователей. Первый с 1, второй с 2 и т. Д.
- Существует также ограничение, позволяющее показывать максимум 99 обращений только по намерению, зацикливая запрос в коде. Нехорошо иметь запрос, который возвращает много обращений, поскольку не имеет смысла иметь больше в списке совпадений пользователей. В этом случае поиск должен быть более конкретным.
Список результатов отображается в отдельном глобальном окне, называемом правой панелью. Хакерская часть заключается в том, что при поиске в модальном диалоговом окне правая панель должна быть отсоединена от главного окна, чтобы можно было выбрать значение с помощью мыши. Мы подозреваем, что это может быть причиной того, что приложение иногда блокируется с помощью модального диалога за главным окном.
После изменения он должен работать так:
Пользователь вводит текст в Combobox и начинает поиск по SQL, как и раньше. Но набор результатов отображается в выпадающем списке. Поэтому я хочу изменить отображение только, если это возможно, так как есть много старых SQL-запросов, которые используются и работают нормально.
Мы используем Delphi 2007, Interbase 2009 и компоненты DevExpress. Вчера я пытался подключить пользовательский источник данных к комбинированному списку, но я понимаю, что это еще не было реализовано. См. Как использовать TcxCustomDataSource в TcxExtLookupComboBox . Я хочу использовать пользовательский источник данных для реализации номера строки и максимального количества попаданий. Se 6 и 7 в списке выше.
Так что теперь я вижу 2 варианта:
- Используйте комбинированный список с поддержкой БД
- Используйте текстовое поле и прикрепите к нему сетку для отображения набора результатов.
Поле со списком проще, потому что это целый компонент, но я не знаю, как реализовать функцию 6 и 7 из списка выше.
Текстовое поле + сетка дают больше свободы, но требуют больше работы.
Я предпочитаю первый вариант. Текущие проблемы:
- Я думаю, что Interbase SQL не может ограничить количество попаданий в набор результатов. Это должно быть сделано с кодом. Как это сделать с помощью комбинированного списка с поддержкой БД?
- Как отобразить номера строк в наборе результатов?
Обновление 1:
Требование 7 решено благодаря Марьяну, спасибо.
Что касается 6, я думаю, что это сложнее. В идеале я хочу, чтобы это было в SQL, чтобы я мог извлечь собственный столбец, такой как Добавление строки № . Но Interbase этого не поддерживает.