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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2018, 14:16   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию автозаполнение Combobox

Доброго дня! вопрос простой, но не получается. есть Combobox, сделала для него автозаполнение - при наборе букв с клавиатуры предлагает варианты.
А как сделать, если, например, не найдено совпадений? чтобы вылетала не системная ошибка 'Access violation...', а программное сообщение.
данные Combobox из базы.
попробовала так, не получилось:
Код:
procedure TFormAddField.cmbEnumerationKeyPress(Sender: TObject; var Key: Char);
begin
if (Key<=#192)and(Key<>' ')and(Key<>#8) then key:=#0 
else begin
 with StdMainForm.ADOQuery do begin
   StdMainForm.ADOQuery.SQL.Text:='Select * from ListValues where like '+QuotedStr('%'+cmbEnumeration.Text+'%');
    try Open
    except
     if cmbEnumeration.Text<>StdMainForm.ADOQuery.SQL.Text then
       Showmessage ('Совпадений не найдено!');  
     // exit;
    end;
 end;
end;
end;
Etsareva вне форума Ответить с цитированием
Старый 29.05.2018, 23:36   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
не системная ошибка 'Access violation...'
AV это не то чтобы системная ошибка, НО... если она вылетает - значит, у Вас где-то некорректная работа с памятью.

Цитата:
StdMainForm.ADOQuery.SQL.Text:='Sel ect * from ListValues where like '+QuotedStr('%'+cmbEnumeration.Text +'%');
У Вас в этом запросе отсутствует имя поля перед like

Цитата:
cmbEnumeration.Text<>StdMainForm.AD OQuery.SQL.Text
Во-первых, в этом условии Вы сравниваете фактически текст запроса с текстом условия запроса.

Во-вторых, если у Вас вылетела ошибка на Open (кстати, вполне вероятно из-за отсутствия имени поля в запросе) - навряд ли будет, что сравнивать

В-третьих, запрос может вернуть (если заработает) более одной записи из базы.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.05.2018, 08:57   #3
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Sciv, все получилось! спасибо!
Etsareva вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Webbrowser и combobox: сделать чтобы в combobox-е оставалась история посещенных сайтов uasya2 Общие вопросы Delphi 6 06.03.2011 20:24
автозаполнение dyusha2006 Microsoft Office Excel 4 21.06.2010 00:22
Автозаполнение. ksu25 Microsoft Office Excel 3 06.10.2009 18:50
Автозаполнение! ANT35 Microsoft Office Access 1 30.10.2008 08:24
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45