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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 16:48   #1
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию Данные для запроса из Combobox

Есть dbgrid,combobox, данные в комбо берутся из файла
Код:
ComboBox1.Items.LoadFromFile('___.txt');
Дальше надо чтобы по изменению данных в combobox менялись данные в dbgrid.
Через поиск нашел такое но выдает ошибку
"Ошибка синтаксиса(пропущен оператор) в выражении запроса .....
Данные в combobox могут быть из нескольких слов.
Код:
 with ADOQuery1 do
begin
    Active:=False;
  SQL.Clear;
  SQL.Add('SELECT Фамилия,Имя,Отчество FROM Общая');
  SQL.Add('WHERE Военкомат = ' + ComboBox1.Items[ComboBox1.ItemIndex] );
  Active:=True;
Где ошибочка?

В первую очередь, ошибка в неверном оформлении кода в вашем сообщении.
Прочтите правила раздела и мы с вами не будем ругаться

Последний раз редактировалось city32; 26.10.2011 в 10:15. Причина: правильное оформление
city32 вне форума Ответить с цитированием
Старый 25.10.2011, 18:15   #2
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Цитата:
Сообщение от city32 Посмотреть сообщение
SQL.Add('SELECT Фамилия,Имя,Отчество FROM Общая');
SQL.Add('WHERE Военкомат = ' + ComboBox1.Items[ComboBox1.ItemIndex] );
Крайне рекомендую имена полей сделать латиницей.
А пока они кирилицей то вроде надо брать их в двойные кавычки.
Вот как например в этой теме.
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем
Surgeon вне форума Ответить с цитированием
Старый 25.10.2011, 18:30   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Скорее всего Военкомат поле символьного типа, тогда
Код:
SQL.Add('SELECT Фамилия,Имя,Отчество FROM Общая');
SQL.Add('WHERE Военкомат = ''' + ComboBox1.Items[ComboBox1.ItemIndex]+'''' );
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.10.2011, 13:39   #4
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию

Ошибка исчезла
Код:
with ADOQuery1 do
begin
  Active:=False;
  SQL.Clear;
  SQL.Add('SELECT Фамилия,Имя,Отчество FROM Общая');
  SQL.Add('WHERE Военкомат = '' +ComboBox1.Items[ComboBox1.ItemIndex] ''');
  Active:=True;
но почему то результаты запроса нулевые((((
попробовал указать явно
Код:
SQL.Add('WHERE Военкомат = ''Стародубский РВК''')
Все нормально работает. Делаю вывод что что то неправильно в структуре запроса. Подскажите где рыть))
city32 вне форума Ответить с цитированием
Старый 26.10.2011, 13:46   #5
Dush
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 116
По умолчанию

ComboBox1.ItemIndex случайно не равен -1? вы выбираете пункт из комбобокса?
можно использовать Combobox1.text
Dush вне форума Ответить с цитированием
Старый 26.10.2011, 13:53   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сравните то что вы написали
Код:
SQL.Add('WHERE Военкомат = '' +ComboBox1.Items[ComboBox1.ItemIndex] ''');
и то, что в #3. Ваше условие будет иметь такой корявый вид в запросе
Код:
WHERE Военкомат = ' +ComboBox1.Items[ComboBox1.ItemIndex] '
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.10.2011 в 13:57.
Аватар вне форума Ответить с цитированием
Старый 26.10.2011, 14:13   #7
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию

Да я выбираю из combobox-а, попробовал
Код:
 SQL.Add('WHERE Военкомат ='' +ComboBox1.text ''');
Все равно нулевой.
city32 вне форума Ответить с цитированием
Старый 26.10.2011, 14:16   #8
Dush
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 116
По умолчанию

поставте брейкпоинт на строке
Код:
Active:=True;
и посмотрите что в ADOQuery1.SQL.Text написано
Dush вне форума Ответить с цитированием
Старый 26.10.2011, 14:45   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

city32, Вам намекают, что Вы в ТЕКСТ запроса вставили наименование комбобокса....

попробуйте так:
Код:
with ADOQuery1 do
begin
  Active:=False;
  SQL.Clear;
  SQL.Add('SELECT Фамилия,Имя,Отчество FROM Общая');
  SQL.Add('WHERE Военкомат = ''' +ComboBox1.Items[ComboBox1.ItemIndex]+ '''');
  Active:=True;
или так (в принципе, тоже самое, но красиве/нагляднее):
Код:
with ADOQuery1 do
begin
  Active:=False;
  SQL.Clear;
  SQL.Add('SELECT Фамилия,Имя,Отчество FROM Общая');
  SQL.Add('WHERE Военкомат = ' +QuotedStr(ComboBox1.Items[ComboBox1.ItemIndex]));
  Active:=True;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2011, 14:48   #10
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию

Извените не совсем понял как смотреть, брекпоинт поставил, а дальше как?
city32 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные из запроса в массив Jene4ka БД в Delphi 2 03.05.2011 22:25
Результаты запроса в ComboBox (Delphi) Solvinder Помощь студентам 2 11.01.2011 11:09
отображение результата запроса в combobox mile4ka БД в Delphi 3 20.12.2010 18:17
как сложить данные полученные из запроса к MS SQL SERVER ? xxxsas SQL, базы данных 2 09.01.2009 17:28
как сложить данные полученные из запроса? xxxsas SQL, базы данных 0 27.11.2008 01:44