Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.05.2011, 13:45
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
Лампочка SQL-запрос

Доброго времени суток. прошу о помощи:
собственно есть delphi и БД access, работаю с ADOQUERY.

вот сам запрос:
form1.ADOQuery1.SQL.text:='SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди
WHERE Люди.id=точка_люди.id_чел AND Точка.id=точка_люди.id_точки AND точка_люди.id_точки=''' +(form2.DBComboBox2.Text)+'''' ;

проблема в последней части запроса: дело в том, что id_точки - числовой тип, а combobox строка. Как мне сделать чтобы комбобокс в запросе воспринимался как число? если просто написать strtoint то будет выдаваться ошибка - в sql запросе должна быть строка а не integer. help
Ответить с цитированием
  #2  
Старый 17.05.2011, 13:52
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Код:
form1.ADOQuery1.SQL.text:='SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди
WHERE Люди.id=точка_люди.id_чел AND Точка.id=точка_люди.id_точки AND точка_люди.id_точки=' + (form2.DBComboBox2.Text);

P.S.: просто нужно убрать ковычки, ковычки нужны для текстовых полей, для числовых - не нужны.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 17.05.2011, 14:04
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

Увы, так вылетает "ошибка синтаксиса (пропущен оператор)...."
изначально было просто "несоответствие типов" =(
Ответить с цитированием
  #4  
Старый 17.05.2011, 14:10
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

покажите Ваш запрос, шото мне подсказывает, шо вы там чота не то написали.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #5  
Старый 17.05.2011, 14:14
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

Код:
  form1.ADOQuery1.SQL.Clear;
  form1.ADOQuery1.active:=false;
  form1.ADOQuery1.SQL.text:='SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди   WHERE Люди.id=точка_люди.id_чел AND Точка.id=точка_люди.id_точки AND точка_люди.id_точки=' + (form2.DBComboBox2.Text);
  form1.ADOQuery1.ExecSQL();
  form1.ADOQuery1.active:=true;
Ответить с цитированием
  #6  
Старый 17.05.2011, 14:19
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

ExecSQL не надо, он нужен для INSERT, UPDATE, DELETE запросов, нужно так:
Код:
form1.ADOQuery1.SQL.text := 'SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id = точка_люди.id_чел AND Точка.id = точка_люди.id_точки AND точка_люди.id_точки = ' + form2.DBComboBox2.Text;
form1.ADOQuery1.Open;
P.S.: и вообще лучше бы использовать JOIN для соединения таблиц.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #7  
Старый 17.05.2011, 14:47
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

проблема не исчезла(( выдает ту же ошибку.. все же ему не нравится условие в запросе.. может все таки проблема с ковычками=(
Ответить с цитированием
  #8  
Старый 17.05.2011, 14:51
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

а так работает?
Код:
form1.ADOQuery1.SQL.text := 'SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id = точка_люди.id_чел AND Точка.id = точка_люди.id_точки';
form1.ADOQuery1.Open;
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #9  
Старый 17.05.2011, 14:55
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

Да так работает.. но мне надо чтоб выводились данные по условию совпадения с combobox..
Ответить с цитированием
  #10  
Старый 17.05.2011, 14:57
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

используйте тот запрос, который с ошибкой и перед form1.ADOQuery1.Open; вставьте:
Код:
form1.ADOQuery1.SQL.SaveToFile('123.txt');
и посмотрите что в файл записалось и покажите
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #11  
Старый 17.05.2011, 15:01
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

Код:
SELECT имя, фамилия, телефон, [Тип адреса], adress, точка_люди.id_точки FROM Люди, Точка, точка_люди WHERE Люди.id = точка_люди.id_чел AND Точка.id = точка_люди.id_точки AND точка_люди.id_точки = 
вот, недоконца записывается запрос
Ответить с цитированием
  #12  
Старый 17.05.2011, 15:02
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

потому что у вас в form2.DBComboBox2.Text - пусто!
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #13  
Старый 17.05.2011, 15:10
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

Да, спасибо, Вы правы. все дело в том что когда выполняется запрос, очищаются все edit, combobox, и тд..
Ответить с цитированием
  #14  
Старый 17.05.2011, 15:14
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

сделайте отдельный ADOQuery для запроса и его используйте для отображения данных.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #15  
Старый 17.05.2011, 15:16
Hastle31 Hastle31 вне форума
Прохожий
 
Регистрация: 17.05.2011
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо Вам большое за помощь!, сей час как раз этим и занимаюсь
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter