Как перебирать записи, которые хранятся в базах данных? - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно повторить записи и отобразить данные.Например, это данные, хранящиеся в базе данных:

This is the data stored in database

FOR EACH tt_shift NO-LOCK BY tt_shift.shft_start_hour BY tt_shift.shft_stop_hour:   
i = i + 1. END.

Как вы хорошо знаете, я перебираю записи и сохраняю общее количество в переменной i. Если вы видите картинкукоторый прикреплен к телу, час начала и остановки хранится в базе данных. Теперь, когда я хочу завершить первую итерацию, он должен показать первую строку часа начала и окончания, также необходимо показать остальные все по отдельности. Любая помощь приветствуется.

Примечание. Мне нужно использовать одни и те же переменные для отображения каждого начального и конечного часа после завершения одной итерации.

Ответы [ 2 ]

0 голосов
/ 28 января 2019
FOR EACH tt_shift
      BY tt_shift.shft_start_hour 
      BY tt_shift.shft_stop_hour:

    accum tt_shift.shft_start_hour (count).

    disp accum count tt_shift.shft_start_hour label "Sequence"
         tt_shift.shft_start_hour             label "Start"
         tt_shift.shft_stop_hour              label "Stop".
END.

Примечание: вам не нужно использовать «no-lock» для временных таблиц;Если используется аккумулятор, не нужно "считать" var.

0 голосов
/ 21 декабря 2018

Предполагая, что "i" является целым числом и что tt_shift.shft_start_hour является символьной строкой (как показано на рисунке) и что вам нужно "i" в секундах:

FOR EACH tt_shift NO-LOCK BY tt_shift.shft_start_hour BY tt_shift.shft_stop_hour:

  i = integer( entry( 1, tt_shift.shft_start_hour, ":" )) * 3600 + integer( entry( 2, tt_shift.shft_start_hour, ":" )).

  display i.

END.

Префикс "tt_" кИмя таблицы подразумевает, что вы работаете с временной таблицей.Temp-таблицы не имеют блокировок, поэтому NO-LOCK не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...