Есть ли способ уменьшить разрыв между двумя заголовками столбцов в DB2 - PullRequest
0 голосов
/ 27 марта 2020

Я работаю на IBM I серии VR7 и работаю SQL (DB2) с использованием CLLE.

У меня есть SQL процедура в TXT-файле, имеющая приведенную ниже команду для создания таблицы в QTEMP.

create table qtemp.FILE1 as (                                                  
select                                                                          
Field1,Field2,Field3,.....Field10 from FILE2 ) with data; 

Я вызываю вышеуказанную процедуру из CLLE, используя следующую команду.

RUNSQLSTM  SRCFILE(MyLib/MySrc) SRCMBR(Proc_txt) COMMIT(*NONE)

И затем запустить команду ниже для генерации спула.

RUNQRY     QRYFILE((FILE1)) OUTTYPE(*PRINTER) OUTFORM(*DETAIL) FORMSIZE(60 132) 
           FORMTYPE(*STD) COPIES(1) LINESPACE(1)  

Проблема, с которой я сталкиваюсь, заключается в том, что при создании я получаю 2 пробелы между столбцами таблица с помощью команды create table. Когда эта таблица преобразуется в файл спула с помощью приведенной выше команды RUNQRY, поля справа обрезаются, поскольку ширина моего отчета по умолчанию составляет 132 , и я не могу ее изменить. Если пробелы в созданной таблице можно уменьшить до 1 , моя проблема будет решена. SQL Я использую IBM i Series по умолчанию и DB2 в качестве базы данных. Я не имею большого представления об их версии.

Edit2: Еще одна проблема, с которой я столкнулся, заключалась в том, что в поле во второй строке было сообщение. На самом деле согласно требованию поле должно быть во втором ряду под другим полем. Например, мне нужно field10 под field5. Я тоже это исправил, прочитайте мой ответ ниже. Надеюсь, что это помогает нуждающимся людям, но я действительно сомневаюсь.

Edit1: я обновил вопрос в соответствии с просьбой. Любая помощь приветствуется. Спасибо.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Короткий ответ: да, вы можете определить, чтобы в отчете было 1 пробел между столбцами, но для этого нужно определить объект Query400. К сожалению, это не очень хорошее место для написания учебника для Query400. Я могу начать, хотя.

Введите wrkqry, нажмите enter.

Затем наведите курсор на поле имени запроса и нажмите F4. Вы сейчас в инструменте. Вам нужно создать новый запрос и определить все об этом в этом инструменте. Поиграйте с этим и посмотрите, поможет ли это вам.

0 голосов
/ 07 апреля 2020

Я смог получить то, что мне было нужно. Как уже предлагали другие, я наконец-то использовал WRKQRY для контроля расстояния между столбцами. Уменьшил интервал между столбцами до 1 и смог получить столбцы, необходимые для ширины 132.

Еще одна проблема, с которой я столкнулся, заключалась в том, что в отчете было поле во второй строке. На самом деле согласно требованию поле должно быть во втором ряду под другим полем. Например, мне нужно field10 под field5. Поэтому я использовал функцию переноса строк, доступную в WRKQRY.

Как я это сделал: создайте объект WRKQRY и выберите нужный файл.

  1. Упорядочил нужное мне поле во второй строке, до конца.
  2. Go до Select Output Type and Output Form и возьмите Y в поле Line Wrapping. Установите ширину переноса, равную ширине вашего отчета. Оставьте другие поля по мере необходимости.
  3. Таким образом, каждая запись будет иметь 10-е поле в следующем ряду, если оно содержит данные. Вы можете добавить столько полей, сколько вам нужно.
  4. Для правильного выравнивания вам может потребоваться добавить несколько пробелов в поле. Я бы предложил создать новое поле и использовать оператор concat (||), доступный в WRKQRY.

Спасибо всем за помощь.

...