Компьютерный форум NoWa.cc

Компьютерный форум NoWa.cc (https://nowa.cc/index.php)
-   Delphi (https://nowa.cc/forumdisplay.php?f=300)
-   -   Delphi7 - Символ продолжения строки (https://nowa.cc/showthread.php?t=229258)

ch_vas 14.07.2009 11:28

Delphi7 - Символ продолжения строки
 
Кто знает есть ли такая байда Delphi?:
есть длинная строка запроса типа:
Код:

'select * from sgoods where (idparent = :id or idgoods = :id) or idgoods in (select idparent from sgoods where idgoods = :id) order by idgoods'
как в дельфях её структуризировать без + и лишних кавычек - в некоторых языках есть понятие симфола продолжения строки в 1с это "|" т.е можно записать
Код:

'select * |
  from sgoods |
  where (idparent = :id or idgoods = :id) or idgoods in |
  (select idparent from sgoods where idgoods = :id) |
  order by idgoods'


rostan2004 14.07.2009 17:30

Re: Delphi7 - Символ продолжения строки
 
Например
Код:

'select *'+
' from sgoods' +
' where (idparent = :id or idgoods = :id) or idgoods in' +
' (select idparent from sgoods where idgoods = :id)' +
' order by idgoods';


ch_vas 14.07.2009 18:00

Re: Delphi7 - Символ продолжения строки
 
Оно то так... я так и пишу - просто в других языках это более усовершенствовано.. во первых нет лишних скобок - не нужно отслеживать открыл ли и закрыл ли, и плюсик рисовать тоже не нужно
почему комментарий после открытия { действителен аж до закрытия }, а скобки в строковых значениях нет.
Как я писал во многих языках такой символ есть в 1с (прототип Паскаля только русский) - это симво "|", в VBA точно не знаю но в инете встречал что вроде как "_" - и только в Delphi недодумались ;-(((

hack 14.07.2009 18:43

Re: Delphi7 - Символ продолжения строки
 
ИМНО Запрос то вы пишете на делфях, но он то относится к Structured Query Language (SQL). отсюда и пляшите ищите описание и его возможности.

Vasuha 14.07.2009 18:52

Re: Delphi7 - Символ продолжения строки
 
Сделайте отдельный файл с текстом запроса, и вычитывайте оттуда, а там уже без плюсов, ковычек и пр...

pluton 14.07.2009 19:15

Re: Delphi7 - Символ продолжения строки
 
Цитата:

Сообщение от hack (Сообщение 2525528)
ИМНО Запрос то вы пишете на делфях, но он то относится к Structured Query Language (SQL). отсюда и пляшите ищите описание и его возможности.

Цитата:

Сообщение от Vasuha (Сообщение 2525560)
Сделайте отдельный файл с текстом запроса, и вычитывайте оттуда, а там уже без плюсов, ковычек и пр...

имхо, что-то вы не в ту сторону думаете. человеку просто надо в коде записать длинную строку.

ch_vas, такое есть во многих языках программирования, но в паскале я такого ни разу не встречал, видимо, не реализовано

ch_vas 15.07.2009 13:29

Re: Delphi7 - Символ продолжения строки
 
pluton, Спасибо - только вы меня поняли....
Если никто больше не знает -значит будем считать что в Delphi такого нет и тему можно считать закрытой...

Демьян 16.07.2009 05:10

Re: Delphi7 - Символ продолжения строки
 
Цитата:

Сообщение от ch_vas (Сообщение 2527291)
pluton, Спасибо - только вы меня поняли....
Если никто больше не знает -значит будем считать что в Delphi такого нет и тему можно считать закрытой...

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

ну и строки то не нужно получается

ch_vas 16.07.2009 09:18

Re: Delphi7 - Символ продолжения строки
 
Демьян, Вопрос то не в длинне запроса а в удобочитаемости и простоте его записи.. вош запрос прийдется писать так:

Цитата:

SQL.add('select a.Telef, ');
SQL.add('EXTRACT(MONTH FROM a.data_oper) mon_dolg, ');
SQL.add('EXTRACT(Year FROM a.data_oper) Year_dolg, ');
SQL.add('a.summa dolg, ');
SQL.add('a.vid_zad vid, ');
SQL.add('EXTRACT(MONTH FROM b.data_oper) mon_opl, ');
SQL.add('EXTRACT(Year FROM b.data_oper) Year_opl, ');
SQL.add('b.summa oplata ');
SQL.add('from zadol a ');
SQL.add('left outer Join oplat b on (a.vid_zad=b.vid_opl and a.telef=b.telef ');
SQL.add('and EXTRACT(MONTH FROM a.data_oper)=EXTRACT(MONTH FROM b.data_oper) ');
SQL.add('and EXTRACT(Year FROM a.data_oper)=EXTRACT(Year FROM b.data_oper)) ');
SQL.add('Where EXTRACT(MONTH FROM a.data_oper) in (1,2,3) and EXTRACT(Year FROM a.data_oper)=2006 ');
SQL.add('and a.telef=33621 ');
и где же тут удобочитаемость - а были бы такие символы как в 1с например - можно было бы написать так:

Цитата:

'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'
В данном случае никаких лишних операторов - кроме синтаксиса запроса не путается

Steve Bloom 17.07.2009 14:45

Re: Delphi7 - Символ продолжения строки
 
Чтобы не было подобных вопросов - нужно избегать делать сколько-нибудь большие запросы в коде клиентской программы.
Для этого есть хранимые процедуры. Или, на худой конец, TQuery

GreyT 30.11.2009 19:21

Re: Delphi7 - Символ продолжения строки
 
Удобочитаемость легко обеспечивается обьявлением одной простой константы

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';

и усьо :)

Nomto 09.12.2009 10:11

Re: Delphi7 - Символ продолжения строки
 
не бойся того что там много компонент будет на форме, большаяя база будет представлять собой множество компонет. используй хранимые процедуры, adodatacommand кажется и остальные.

Добавлено через 1 минуту
чаще используй хранимые процедуры.. оч хорошая вещь

Leser 16.12.2009 11:46

Re: Delphi7 - Символ продолжения строки
 
Цитата:

Сообщение от Nomto (Сообщение 2853935)
не бойся того что там много компонент будет на форме, большаяя база будет представлять собой множество компонет. используй хранимые процедуры, adodatacommand кажется и остальные.

Добавлено через 1 минуту
чаще используй хранимые процедуры.. оч хорошая вещь

Насколько я помню, хранимые процедуры не дают набора записей, а только значения параметров, а топикстартер вроде как использует селект именно для получения набора записей...

Steve Bloom 16.01.2010 03:43

Re: Delphi7 - Символ продолжения строки
 
Цитата:

Сообщение от Leser (Сообщение 2866852)
Насколько я помню, хранимые процедуры не дают набора записей, а только значения параметров

это вы неправильно помните...


Текущее время: 22:33. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2025 NoWa.cc

Время генерации страницы 0.03437 секунды с 9 запросами