|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.07.2010, 13:51 | #1 |
Пользователь
Регистрация: 08.07.2010
Сообщений: 62
|
SQL:Statement too long
пишу SQL запрос в ADOQuery, а он мне пишет - SQL:Statement too long
мне надо как-то это обойти, потому что текст запроса и правда длиный (порядка 30 строк), но он такой и должен быть. может где-то в настройках ADO что поменять?? (потому что раньше всё осуществлялось на BDE - TQuery - и такой ошибки не было ) |
19.07.2010, 14:24 | #2 |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
шайтан-запрос !!!
можно в студию?
Non est culpa vin, sed culpa bibentis
|
19.07.2010, 15:42 | #3 |
Пользователь
Регистрация: 08.07.2010
Сообщений: 62
|
вот например такой выполняется
select * from ЕВЖО0711 where region = 123456789 or vessel = :ves or cruise_n > 50.00 or cruise_n < 1.00 or latitude>90.00 or latitude<(-90.00) or longitude > 180.00 or longitude< (-180.00) or (n_hawl>300.00 or n_hawl<1.00) or (num > 200.00 or num < 1.00) or ((obj_code = 85400901) and ((sex="M" and ((matur_st = 10 and (m_lngth>:X10 or m_lngth<:R10)) or (matur_st = 20 and (m_lngth>:X20 or m_lngth<:R20)) or (matur_st = 30 and (m_lngth>:X30 or m_lngth<:R30)) or (matur_st = 40 and (m_lngth>:X40 or m_lngth<:R40)) or (matur_st = 51 and (m_lngth<:X51 or m_lngth>:R51)) or (matur_st = 52 and (m_lngth<:X52 or m_lngth>:R52)) or (matur_st = 53 and (m_lngth<:X53 or m_lngth>:R53)) or (matur_st = 60 and (m_lngth<:X60 or m_lngth>:R60)) or (matur_st = 70 and (m_lngth<:X70 or m_lngth>:R70)) or m_lngth>:RR2 or m_lngth<:RR0)) or (sex="F" and ((matur_st = 10 and (m_lngth>:Y10 or m_lngth<:S10)) or (matur_st = 20 and (m_lngth>:Y20 or m_lngth<:S20)) or (matur_st = 30 and (m_lngth>:Y30 or m_lngth<:S30)) or (matur_st = 40 and (m_lngth>:Y40 or m_lngth<:S40)) or (matur_st = 51 and (m_lngth<:Y51 or m_lngth>:S51)) or (matur_st = 52 and (m_lngth<:Y52 or m_lngth>:S52)) or (matur_st = 53 and (m_lngth<:Y53 or m_lngth>:S53)) or (matur_st = 60 and (m_lngth<:Y60 or m_lngth>:S60)) or (matur_st = 70 and (m_lngth<:Y70 or m_lngth>:S70)) or m_lngth>:SS2 or m_lngth<:SS0)) or (sex="J" and ( m_lngth>:TT1 or m_lngth<:TT0)))) or (sex <> "M" and sex <> "F" and sex <> "J") а вот такой уже нет select * from ЕВЖО0711 where region = 123456789 or vessel = :ves or cruise_n > 50.00 or cruise_n < 1.00 or latitude>90.00 or latitude<(-90.00) or longitude > 180.00 or longitude< (-180.00) or (n_hawl>300.00 or n_hawl<1.00) or (num > 200.00 or num < 1.00) or ((obj_code = 85400901) and ((sex="M" and ((matur_st = 10 and (m_lngth>:X10 or m_lngth<:R10)) or (matur_st = 20 and (m_lngth>:X20 or m_lngth<:R20)) or (matur_st = 30 and (m_lngth>:X30 or m_lngth<:R30)) or (matur_st = 40 and (m_lngth>:X40 or m_lngth<:R40)) or (matur_st = 51 and (m_lngth<:X51 or m_lngth>:R51)) or (matur_st = 52 and (m_lngth<:X52 or m_lngth>:R52)) or (matur_st = 53 and (m_lngth<:X53 or m_lngth>:R53)) or (matur_st = 60 and (m_lngth<:X60 or m_lngth>:R60)) or (matur_st = 70 and (m_lngth<:X70 or m_lngth>:R70)) or m_lngth>:RR2 or m_lngth<:RR0)) or (sex="F" and ((matur_st = 10 and (m_lngth>:Y10 or m_lngth<:S10)) or (matur_st = 20 and (m_lngth>:Y20 or m_lngth<:S20)) or (matur_st = 30 and (m_lngth>:Y30 or m_lngth<:S30)) or (matur_st = 40 and (m_lngth>:Y40 or m_lngth<:S40)) or (matur_st = 51 and (m_lngth<:Y51 or m_lngth>:S51)) or (matur_st = 52 and (m_lngth<:Y52 or m_lngth>:S52)) or (matur_st = 53 and (m_lngth<:Y53 or m_lngth>:S53)) or (matur_st = 60 and (m_lngth<:Y60 or m_lngth>:S60)) or (matur_st = 70 and (m_lngth<:Y70 or m_lngth>:S70)) or m_lngth>:SS2 or m_lngth<:SS0)) or (sex="J" and ( m_lngth>:TT1 or m_lngth<:TT0)))) or (sex <> "M" and sex <> "F" and sex <> "J") or stom_weig*5>=weigth |
19.07.2010, 16:05 | #4 |
Я есть!
Форумчанин
Регистрация: 17.02.2008
Сообщений: 318
|
О МАЙ ГАД!!! Это просто изнасилование!!! Учите SQL!
фуф... ну теперь, к вопросу... мой вам первый совет: не используйте OR пишите объединенные запросы, так будет сто процентов быстрее... постарайтесь сократить условия выборки, используйте логику. UPD И еще! Оформляйте тему нормально. Код заключайте в тэг [CODE] или кнопка "#". А то смотреть противно!
©Учиться, учиться и еще раз учиться!
Последний раз редактировалось quit; 19.07.2010 в 16:18. |
19.07.2010, 16:17 | #5 |
Пользователь
Регистрация: 08.07.2010
Сообщений: 62
|
ну как бы да.... я нуб....
сейчас буду разбирать условия, посокращается что-нить. а есть какой-то способ писать длинные запросы?? просто у меня добавляются условия на усмотрение пользователя. и длинные всё равно будут получаться. |
19.07.2010, 16:23 | #6 |
Я есть!
Форумчанин
Регистрация: 17.02.2008
Сообщений: 318
|
Если бы я был пользователем, я бы застрелился вводить столько параметров, чтобы осуществить трудноосуществимый запрос.
Способ писать длинные запросы есть, если структура БД грамотно спроектирована и нужные поля проиндексированы, тогда, и запрос будет написать проще, и работать он будет шустро.
©Учиться, учиться и еще раз учиться!
|
19.07.2010, 16:29 | #7 |
Пользователь
Регистрация: 08.07.2010
Сообщений: 62
|
у меня пользователь будет только галочки ставить, а в запросе появляются доп. условия.
БД - (не ругайтесь - поменять не имею права) таблицы DBF. |
19.07.2010, 16:39 | #8 |
Я есть!
Форумчанин
Регистрация: 17.02.2008
Сообщений: 318
|
хорошо, тогда делай нормальную постановку задачи(мы как бы не телепаты), описание таблицы и попробуй написать еще раз запрос, только постарайся как можно меньше использовать OR или покопай инфу в сторону объединения UNION... и вообще в sql по глубже копай
©Учиться, учиться и еще раз учиться!
|
19.07.2010, 17:05 | #9 |
Пользователь
Регистрация: 08.07.2010
Сообщений: 62
|
структура запроса простая
select все столбцы from таблица(DBF формата, которую пользователь сам выбирает) where условие 1 or условие 2 ... условие n причем условия сложные.. с параметрами (они устанавливаются либо пользователем либо автоматически) добавляются при checkbox.Checked=true вот я и решила просто добавлять условия ADOQuery1.SQL.Add('...') а оказывается получается длинный запрос, который ADO не выполняет. |
19.07.2010, 17:07 | #10 |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
я сообщу по секрету что m_lngth в данном условии может иметь любое значение m_lngth>:X20 or m_lngth<:R20
т.е. условие обрабатывается сервером - но результата не приносит.
Non est culpa vin, sed culpa bibentis
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перевод строки в long long и обратно | Dimarik | Общие вопросы C/C++ | 9 | 16.09.2009 13:27 |
Ошибки «If statement missing )» | Яр|/||< (^_^) | Общие вопросы C/C++ | 14 | 23.06.2009 23:17 |
Long file name (LFN) | Liquor | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 29.03.2009 17:10 |
Statement Global | blutang | Microsoft Office Excel | 4 | 07.02.2009 12:33 |