Другие языки программирования и технологии
В Delphi не работает SQL запрос.
Сразу прошу извинить за детский вопрос. Раньше работал с FoxPro. Там все по-другому. Теперь вот осваиваю Delphi. Работаю с БД Access-2016. Там есть таблицы "Школы" и "Ученики". В Form1 вывожу в DBGrid таблицу "Школы". Выбираем там школу и присваиваем переменной "x" значение текстового поля "Название" (например, "Школа №3"). Иду в Form2, наследницу Form1 (uses Form1). Там в DBEdit1 вывожу значение переменной "x". Все ok - "Школа №3". Далее в Form2 пытаюсь в DBGrig вывести список всех учеников Школы №3. Для этого в ADOQuery1, в SQL создаю запрос: SELECT * FROM Ученики WHERE Школа= '+DBEdit1.AsString'. Компилирую, не ругается, но в Grid-е ничего не выводит, а точно известно, что в таблице "Ученики" есть записи со значением поля "Школа" = "Школа №3". ??
в компонентах класса Qyery есть параметры. Пробовали работать через них?
запрос выглядит
"select * from Ученики where Школа=:param1"
далее, в свойстве Params этот параметр появляется сам. определяйте ему тип и так далее
запрос выглядит
"select * from Ученики where Школа=:param1"
далее, в свойстве Params этот параметр появляется сам. определяйте ему тип и так далее
1. Связь между таблицами лучше всего осуществлять при помощи числовых синтетических ключей.
2. Динамическое формирование запроса - это тоже моветон и дыра для SQL injection
3. Скопируй получившийся текст запроса в твою RDBMS и запусти. Там он тоже не пройдет, я гарантирую это.
4. Почитай что-нибудь умное про master-detail в дельфи. Там ничего сложного, но вот прямо тут на пальцах не объяснить.
2. Динамическое формирование запроса - это тоже моветон и дыра для SQL injection
3. Скопируй получившийся текст запроса в твою RDBMS и запусти. Там он тоже не пройдет, я гарантирую это.
4. Почитай что-нибудь умное про master-detail в дельфи. Там ничего сложного, но вот прямо тут на пальцах не объяснить.
Приводят весь код, желательно на pastebin.com
и сюда ссылку.
А так, мне вот странно это кажется:
SELECT * FROM Ученики WHERE Школа= '+DBEdit1.AsString'
Почему в одинарных кавычках + и остальное... а в начале это нет.
Все должно быть в виде строки и ввод для запроса вообще достаточно в обычном Edit.Text
А так разберите готовый проект и будет ясно.
и сюда ссылку.
А так, мне вот странно это кажется:
SELECT * FROM Ученики WHERE Школа= '+DBEdit1.AsString'
Почему в одинарных кавычках + и остальное... а в начале это нет.
Все должно быть в виде строки и ввод для запроса вообще достаточно в обычном Edit.Text
А так разберите готовый проект и будет ясно.
Ну, как минимум, Школа №3 в кавычки забыл взять. Но могут быть и другие ошибки, т. к. код программы никто не читал
попробуйте так:
ADOQuery1.SQL.Text:='SELECT * FROM Ученики WHERE Школа= '+QuotedStr(DBEdit1.AsString);
ADOQuery1.SQL.Text:='SELECT * FROM Ученики WHERE Школа= '+QuotedStr(DBEdit1.AsString);
Диман Мосолов
Попробовал. И просто копировал строку, и попытался обыграть:
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT * FROM Ученики WHERE Школа= '+'QuotedStr(DBEdit1.AsString)';
ADOQuery1.Open;
нет, пока не заработало....
И все же: - "Спасибо большое вам и всем, кто откликнулся за отклик и участие! ".
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT * FROM Ученики WHERE Школа= '+'QuotedStr(DBEdit1.AsString)';
ADOQuery1.Open;
нет, пока не заработало....
И все же: - "Спасибо большое вам и всем, кто откликнулся за отклик и участие! ".
SELECT * FROM Ученики WHERE Школа= '+DBEdit1.AsString'
как и сказали выше, - надо добавить кавычки! (двойная кавычка, одинарная кавычка)
ТекстЗапроса = 'SELECT * FROM Ученики WHERE Школа="' + DBEdit1.AsString + '"'
ADOQuery1.чтототам. ТекстЗапроса := ТекстЗапроса;
как и сказали выше, - надо добавить кавычки! (двойная кавычка, одинарная кавычка)
ТекстЗапроса = 'SELECT * FROM Ученики WHERE Школа="' + DBEdit1.AsString + '"'
ADOQuery1.чтототам. ТекстЗапроса := ТекстЗапроса;
Похожие вопросы
- Перечень допустимых функций в SQL-запросе ADO Jet 4.0 (MS Access)
- sql запрос как сделать предложение? Как написать девушке предложение выйти замуж с помощью SQL-запроса?
- SQL запрос в Acces
- SQL запросы к внешним ключам
- Помогите с SQL запросом
- Каким образом можно выполнить несколько миллионов SQL запросов за 10 минут?
- Люди, знающие SQL, помогите сделать запрос.
- Быстродействие падает, система виснет после запроса к базе SQL +++
- Помогите создать запрос на SQL
- Невероятная ситуация с базами и запросами SQL
типа:
:param1=Form1.ADOQuery1.FieldByName.[Школа]. AsString; ???