Delphi - Как разбить конкатенацию строк на несколько строк - PullRequest
3 голосов
/ 12 марта 2012

У меня длинный текст SQL, который я хочу назначить запросу SQL. Я делаю это следующим образом:

SQL.Text:= 'SELECT T1.COLUMN1,T2.COLUMN2,T1COLUMN3..........,'+
          ' T1.COLUMNn FROM TABLE1 T1 INNER JOIN '+
          ' TABLE2 T2 ON T1.ID=T2.ID'+
          ' WHERE T1.COLUMN10=100'

Фактический SQL в 20 раз длиннее, чем этот. Моя проблема с разрывами строк. Когда я форматирую исходный код (Ctrl + D), он иногда оставляет строки, как я набрал, но в других случаях он удаляет разрывы строк, и я получаю что-то вроде этого:

 'SELECT T1.COLUMN1,T2.COLUMN2,T1COLUMN3 ' + 'FROM TABLE1 T1 INNER JOIN '+  'TABLE2 T2 ON T1.ID=T2.ID'

И это приводит к ошибке «слишком длинная строка (более 1023 символов)». Что интересно, это происходит не со всеми строками. Я не могу уловить разницу между линиями, которые будут затронуты, и теми, которые не будут. Мне нужен разрыв строки после или перед знаком «+». Как мне это сделать?

Ответы [ 2 ]

14 голосов
/ 12 марта 2012

Вы также можете использовать функцию Добавить.

SQL.Clear;
SQL.ADD('SELECT T1.COLUMN1,T2.COLUMN2,T1COLUMN3..........,');
SQL.ADD(' T1.COLUMNn FROM TABLE1 T1 INNER JOIN');
SQL.ADD(' TABLE2 T2 ON T1.ID=T2.ID');
SQL.ADD(' WHERE T1.COLUMN10=100');
0 голосов
/ 12 марта 2012

Попробуйте назначить значение в каждой строке:

SQL.Text := 'SELECT T1.COLUMN1,T2.COLUMN2,T1COLUMN3..........,';
SQL.Text := SQL.Text + ' T1.COLUMNn FROM TABLE1 T1 INNER JOIN ';
SQL.Text := SQL.Text + ' TABLE2 T2 ON T1.ID=T2.ID';
SQL.Text := SQL.Text + ' WHERE T1.COLUMN10=100';

Я знаю, это выглядит ужасно, но я думаю, что это решает вашу проблему.

...