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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2017, 00:26   #1
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию ComboBox +sql

Подскажите как реализовать автоматические sql запросы по выбору строки из Combobox.?
Есть форма. Выбираем фамилию клиента и мы должны автоматически получить первоначальные данныеСнимок.JPG
Но в результате я получаю пустые строки. Как понял делать в OnChange компонента.
Код:
procedure TForm10.FormCreate(Sender: TObject);
begin
DM1.ADOQuery1.Close;
  DM1.ADOQuery1.SQL.Clear;
  DM1.ADOQuery1.SQL.Add('SELECT DISTINCT surname FROM pers_data');
  DM1.ADOQuery1.Open;
   // ---------заполнение ComboBox1 ---------- //
  ComboBox1.Items.Clear;
  While not DM1.ADOQuery1.Eof do
  begin
     ComboBox1.Items.Add(DM1.ADOQuery1.Fields[0].AsString);
     DM1.ADOQuery1.Next;
  end;
end;
Код:
procedure TForm10.ComboBox1Change(Sender: TObject);
begin
DM1.ADOQuery1.SQL.Text:='select name,middlename,phone,email from pers_data where surname=:'+QuotedStr(ComboBox1.Text);
DM1.ADOQuery1.Open;
Edit1.Text:=DM1.ADOQuery1.Fields[0].AsString;
Edit2.Text:=DM1.ADOQuery1.Fields[1].AsString;
Edit3.Text:=DM1.ADOQuery1.Fields[2].AsString;
Edit4.Text:=DM1.ADOQuery1.Fields[3].AsString;
end;
dimka123 вне форума Ответить с цитированием
Старый 09.06.2017, 00:31   #2
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
where surname=:
Для начала уберите двоеточие
Теперь дальше:
Цитата:
Сообщение от dimka123 Посмотреть сообщение
While not DM1.ADOQuery1.Eof do
begin
ComboBox1.Items.Add(DM1.ADOQuery1.F ields[0].AsString);
DM1.ADOQuery1.Next;
end;
На время этого цикла надо блокировать выполнение обработчика ComboBox1Change, иначе у вас получится катавасия.
Организуйте флажок, в зависимости от значения которого этот обработчик будет выполняться или нет.

Последний раз редактировалось kropotkina-alice; 09.06.2017 в 00:35.
kropotkina-alice вне форума Ответить с цитированием
Старый 09.06.2017, 00:40   #3
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

спасибо.. проблема оказалась в двоеточии)
dimka123 вне форума Ответить с цитированием
Старый 09.06.2017, 01:02   #4
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

В дополнение.
Вместо ComboBox1Change лучше использовать ComboBox1Select.
Тогда и флажок не нужен...
kropotkina-alice вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить информацию из combobox'a в запрос sql cherepkosti C# (си шарп) 2 05.06.2017 09:06
SQL Запрос на основе Combobox dimkoss Общие вопросы Delphi 10 05.05.2016 21:56
Combobox и SQL server Toshibo БД в Delphi 7 02.11.2012 09:04
ComboBox как параметр для sql-запроса. Xakand_2009 БД в Delphi 2 03.07.2012 20:31
Отображение данных из базы SQL в MFC ComboBox al072 C/C++ Базы данных 0 06.05.2012 19:14