![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Кто знает есть ли такая байда Delphi?:
есть длинная строка запроса типа: Код:
'select * from sgoods where (idparent = :id or idgoods = :id) or idgoods in (select idparent from sgoods where idgoods = :id) order by idgoods' Код:
'select * | from sgoods | where (idparent = :id or idgoods = :id) or idgoods in | (select idparent from sgoods where idgoods = :id) | order by idgoods' |
|
|
|
|
| Реклама: | плиту газовую купить в москве | мотор-колеса для вентиляторов | карбид кремния зеленый | medods | Заходите на сайт MebelStol.ru: купить компьютерное кресло - отличные цены и большой выбор! |
|
|
#2
|
|
Неактивный пользователь
Пол:
Регистрация: 18.04.2009
Адрес: СПб
Сообщений: 41
Репутация: 65
|
Например
Код:
'select *'+ ' from sgoods' + ' where (idparent = :id or idgoods = :id) or idgoods in' + ' (select idparent from sgoods where idgoods = :id)' + ' order by idgoods'; |
|
|
|
|
|
#3
|
|
Оно то так... я так и пишу - просто в других языках это более усовершенствовано.. во первых нет лишних скобок - не нужно отслеживать открыл ли и закрыл ли, и плюсик рисовать тоже не нужно
почему комментарий после открытия { действителен аж до закрытия }, а скобки в строковых значениях нет. Как я писал во многих языках такой символ есть в 1с (прототип Паскаля только русский) - это симво "|", в VBA точно не знаю но в инете встречал что вроде как "_" - и только в Delphi недодумались ;-((( |
|
|
|
|
|
|
#4
|
|
ИМНО Запрос то вы пишете на делфях, но он то относится к Structured Query Language (SQL). отсюда и пляшите ищите описание и его возможности.
__________________
У победы много отцов, поражение всегда сирота. |
|
|
|
|
|
|
#5
|
|
Постоялец
![]() ![]() Пол:
Регистрация: 13.03.2008
Адрес: Минск
Сообщений: 257
Репутация: 231
|
Сделайте отдельный файл с текстом запроса, и вычитывайте оттуда, а там уже без плюсов, ковычек и пр...
__________________
|
|
|
|
|
|
#6
|
||||||||||||||||||||||||||||||||||||||||||||||
имхо, что-то вы не в ту сторону думаете. человеку просто надо в коде записать длинную строку. ch_vas, такое есть во многих языках программирования, но в паскале я такого ни разу не встречал, видимо, не реализовано
__________________
THE TRUTH IS OUT THERE |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#7
|
|
pluton, Спасибо - только вы меня поняли....
Если никто больше не знает -значит будем считать что в Delphi такого нет и тему можно считать закрытой... |
|
|
|
|
|
|
#8
|
|||||||||||||||||||||||
SQL.add('тут запрос '); SQL.add('тут запрос '); итд У меня и длиннее запросы есть select a.Telef, EXTRACT(MONTH FROM a.data_oper) mon_dolg, EXTRACT(Year FROM a.data_oper) Year_dolg, a.summa dolg, a.vid_zad vid, EXTRACT(MONTH FROM b.data_oper) mon_opl, EXTRACT(Year FROM b.data_oper) Year_opl, b.summa oplata from zadol a left outer Join oplat b on (a.vid_zad=b.vid_opl and a.telef=b.telef and EXTRACT(MONTH FROM a.data_oper)=EXTRACT(MONTH FROM b.data_oper) and EXTRACT(Year FROM a.data_oper)=EXTRACT(Year FROM b.data_oper)) Where EXTRACT(MONTH FROM a.data_oper) in (1,2,3) and EXTRACT(Year FROM a.data_oper)=2006 and a.telef=33621 ну и строки то не нужно получается Последний раз редактировалось Демьян; 16.07.2009 в 05:23.. |
||||||||||||||||||||||||
|
|
|
|
|
#9
|
||||||||||||||||||||||||||||||||||||||
|
Демьян, Вопрос то не в длинне запроса а в удобочитаемости и простоте его записи.. вош запрос прийдется писать так:
и где же тут удобочитаемость - а были бы такие символы как в 1с например - можно было бы написать так:
В данном случае никаких лишних операторов - кроме синтаксиса запроса не путается Последний раз редактировалось ch_vas; 16.07.2009 в 09:20.. |
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
#10
|
|
Пользователь
Пол:
Регистрация: 23.08.2008
Адрес: Москва
Сообщений: 38
Репутация: 7
|
Чтобы не было подобных вопросов - нужно избегать делать сколько-нибудь большие запросы в коде клиентской программы.
Для этого есть хранимые процедуры. Или, на худой конец, TQuery |
|
|
|
|
|
#11
|
|
Неактивный пользователь
Пол:
Регистрация: 30.11.2009
Сообщений: 3
Репутация: 1
|
Удобочитаемость легко обеспечивается обьявлением одной простой константы
const CRLF = #13#10; var q: TQuery; begin q.SQL.Text:= 'SELECT bla_bla_bla'+CRLF+ ' FROM tab1, tab2, tab3'+CRLF+ ' WHERE tab1.a=tab2.b'+CRLF+ ' AND tab2.c=tab3.d'+CRLF+ ' ORDER BY tab3.e'; и усьо ![]() |
|
|
|
|
|
#12
|
|
Новичок
Пол:
Регистрация: 16.10.2009
Сообщений: 4
Репутация: 0
|
не бойся того что там много компонент будет на форме, большаяя база будет представлять собой множество компонет. используй хранимые процедуры, adodatacommand кажется и остальные.
Добавлено через 1 минуту чаще используй хранимые процедуры.. оч хорошая вещь Последний раз редактировалось Nomto; 09.12.2009 в 10:12.. Причина: Добавлено сообщение |
|
|
|
|
|
#13
|
|
Насколько я помню, хранимые процедуры не дают набора записей, а только значения параметров, а топикстартер вроде как использует селект именно для получения набора записей... |
|
|
|
|
|
|
#14
|
|
Пользователь
Пол:
Регистрация: 23.08.2008
Адрес: Москва
Сообщений: 38
Репутация: 7
|
|
|
|
|
![]() |
| Опции темы | |
| Опции просмотра | |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Что означает символ & в php | chertenok | PHP | 14 | 14.11.2010 12:20 |
| delphi7 +xml 100мб | Mutabor182 | Delphi | 2 | 08.03.2009 11:52 |
| Запрос Access2007 в Delphi7 | dimarix | Delphi | 6 | 07.04.2008 09:08 |
| Delphi7(BDS непредлагать) VS Excel | Skazi | Delphi | 9 | 07.06.2007 13:31 |
|
|