0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 50
|
||||||
1 | ||||||
SQL-запрос работает наполовину. Нужен совет24.10.2016, 11:12. Показов 628. Ответов 12
Метки нет (Все метки)
Здравствуйте! Проблема с SQL-запросом. В Delphi Сиэтл установил ADOConnection, ADOQuery и DBGrid. ADOConnection связан с базой Access 2003 формата через драйвер Jet 4.
Использую запрос, чтобы вытащить из базы данных заявок от пользователей те заявки, которые удовлетворяют следующим требованиям: 1) Дата создания заявки (DataSozd) находится между Dat1 и Dat2. 2)Дата создания заявки меньше, чем Dat1 и её состояние (Sostoyanie) = ‘Не выполнено’ + у заявки есть копии (ShhetchikKopij > 0) 3) Дата создания заявки меньше, чем Dat1, но её состояние уже равно ‘Выполнено’ и дата выполнения (DataVypoln) > Dat1 + у заявки тоже есть копии (ShhetchikKopij > 0) Вот кусок кода:
Zayavki – имя таблицы, содержащей заявки от пользователей на выполнение каких-то работ. DataSozd – поле типа Дата/Время – Дата создания заявки Sostoyanie – поле типа Текст – в нём могут храниться только 2 значения (я проверял, 3-го нет нигде): Выполнено или Не выполнено. DataVypoln - поле типа Дата/Время – Дата выполнения заявки ShhetchikKopij – поле типа Длинное целое – Счетчик количества копий данной заявки Dat1, Dat2 и Dat3 – параметры типа Дата/Время, Data1 и Data2 - переменные типа TDateTime. Запрос в таком виде НЕ выполняется, ошибок никаких НЕ выдает, просто пустой DBGrid и ADOQuery.RecordCount = 0. Если запрос разбить на 2 отдельных запроса: 1 запрос - условие, которое перед самым первым "Or", 2 запрос - всё остальное, то эти 2 запроса по отдельности прекрасно ВЫПОЛНЯЮТСЯ. КАК слить их воедино и в чём причина? Спасибо.
0
|
24.10.2016, 11:12 | |
Ответы с готовыми решениями:
12
Нужен совет по SQL Нужен совет по DBMS Sql Нужен совет в составлении Sql-запроса Запрос суммыдт из проводок. Нужен совет |
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
||||||
24.10.2016, 11:29 | 2 | |||||
Для начала я бы проверил расстановку скобок, ибо там просто атас творится.
0
|
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 50
|
|
24.10.2016, 11:32 [ТС] | 3 |
Добавлено через 1 минуту
Проверил уже раз 100500. Благо Делфи подсвечивает их
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
|
24.10.2016, 11:34 | 4 |
Так, я в своем коде забыл поставить последнюю скобку в запрос. Запросы с раздельными условиями в студию.
0
|
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 50
|
|
24.10.2016, 11:34 [ТС] | 5 |
Нет. Там, где значения Выполнено и Не выполнено - это текстовое поле
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
||||||
24.10.2016, 11:48 | 6 | |||||
0
|
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 50
|
|||||||||||
24.10.2016, 12:51 [ТС] | 7 | ||||||||||
1 запрос:
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
||||||
24.10.2016, 13:25 | 8 | |||||
Попробуйте, все же, применить этот код:
0
|
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 50
|
|
25.10.2016, 02:10 [ТС] | 9 |
Ничего не изменилось.
Добавлено через 46 минут Я почти не знаю SQL. Разбираюсь с ним по мере написания проги. Я так понимаю тут надо что-то с Union прописывать в запросе.
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
||||||
25.10.2016, 09:07 | 10 | |||||
Скиньте получившийся код.
UNION сам по себе работает просто: он объединяет результаты двух сходных запросов:
0
|
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 50
|
|
25.10.2016, 23:06 [ТС] | 11 |
Спасибо. Сам разобрался. Причина крылась в том, что если в запросе параметр с одним и тем же именем встречается во 2 и более раз, то он игнорируется. Пришлось создавать аж 4 параметра и присваивать им одну и ту же переменную. Это же нерационально! У них какая-то хрень с параметрами ещё с Делфи 7 идёт, а вроде ведь солидная контора эта...Borland, щас Embarcadero или как их там...
0
|
Nanotentacle
|
26.10.2016, 07:19
#12
|
Не по теме: KAV1989, думаю, это чем-то обусловлено, о чем мы не догадываемся. Я слишком далек от того, чтобы считать людей, которые могут написать компонент работы с базой данных, которым пользуется куча людей, настолько невнимательными, что они будут допускать подобные ошибки. Скорее всего, какая-то специфика.
0
|
0 / 0 / 3
Регистрация: 21.09.2015
Сообщений: 135
|
||||||
26.10.2016, 18:15 | 13 | |||||
Не по теме: Ага, было дело в делфи проблемы с Access, до сих пор не понял синтаксиса, каждый JOIN обрамлять в скобочки... Кликните здесь для просмотра всего текста
0
|
26.10.2016, 18:15 | |
26.10.2016, 18:15 | |
Помогаю со студенческими работами здесь
13
SQL запрос, работающий в MS SQL Menegment'e не работает в делфи Не работае запрос в SQL Navigator 6.0 хотя работает в 4 и SQL Plus Не работает UBS-порты, нужен дельный совет Использование shell_exec() в ubuntu 10.04 (не работает, нужен совет) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |