Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Программная реализация Sql-запросов средствами Delphi  (Прочитано 6318 раз)
0 Пользователей и 1 Гость смотрят эту тему.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« : 16-09-2010 11:08 » 

Здравствуйте! Класс!
Нам дали на самостоятельное изучение реализацию SQL-запросов с помощью Delphi. Тема несложная, но на самом последнем этапе трудности всё-таки возникли. Меня одолевают смутные сомнения
Вот задание:
Практическое задание
1.С помощью MS Access создайте таблицу БД в соответствие с Табл. 1. Создайте в таблице не менее пяти записей.
2.Используя программный способ формирования SQL-запросов, создайте приложение, которое реализует следующие возможности:
- Определяет номер телефона по фамилии абонента;
- Определяет фамилию, имя, отчество и адрес абонента по номеру телефона;
- Выдает все номера телефонов, Ф.И.О. и номера квартир абонентов, проживающих на одной улице в одном доме (по указанному номеру дома и указанной улице
Вот с последним-то заданием я и не справилась. С ума сойти...
У меня есть два Edit'а-один для ввода улицы, другой для ввода дома, кнопка, в процедуре написано следующее:
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT PhoneNum, FName, LName, PhName , Kv');
ADOQuery1.SQL.Add('FROM Таблица1');
ADOQuery1.SQL.Add('WHERE Street='+'"'+Edit4.Text+'"');
//ADOQuery1.SQL.Add('WHERE House='+'"'+Edit9.Text+'"');
ADOQuery1.Open;
ADOQuery1.Active:=True;
end;
По отдельности (когда один из них закомментирован) запросы работают правильно, но вместе никак не хотят, программа вылетает и выдаёт ошибку "Ошибка синтаксиса (пропущен оператор) в выражении запроса Street="Пушкина" WHERE House="77""
Помогите пожалуйста! Не понял
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 16-09-2010 11:23 » 

Я не знаю какой там диалект SQL используетcя, но попробуй вместо второго WHERE поставить просто AND:

Код:
ADOQuery1.SQL.Add('WHERE Street='+'"'+Edit4.Text+'"');
ADOQuery1.SQL.Add('AND House='+'"'+Edit9.Text+'"');
« Последнее редактирование: 16-09-2010 11:25 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #2 : 16-09-2010 14:05 » 

Заработало, спасибо Люблю!
Записан
Kivals
Команда клуба

us
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 16-09-2010 14:18 » 

Надеясь на оптимизатор SQL запросов я всегда условия пишу в виде (для одинаковости строк условий и возможности закомментировать любую):
Код:
Where (1=1)
  AND (Street="...")
  AND (House="...")
По идее все современные оптимизаторы строку (1=1) должны просто убирать...
Записан
baldr
Команда клуба

ru
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #4 : 16-09-2010 14:18 » 

Kivals, +1
я тоже так всегда делаю Улыбаюсь
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #5 : 16-09-2010 17:51 » new

Kivals, baldr, и я тоже )) Только я ещё пробельчиками выравниваю, чтобы блочным выделением одинаковые части копировать можно было (например список полей) Отлично
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines