2012-10-10 2 views
0

잠시 동안 내 마지막 질문이되기를 바랍니다. Progress의 UI 기능에 대해 언급 할 것이별로 없다는 것을 알고 있지만 프레임에 표시 할 때 실제로 이상한 문제가있는 것 같습니다.테이블의 마지막 레코드 만 표시하는 프레임

DEF TEMP-TABLE tMainTable. 
DEF TEMP-TABLE tPage LIKE tMainTable. 
DEF VAR iCursor AS INT. 

/* SOME INPUT DETECTION */ 
/* Moving the cursor */ 

FIND FIRST tMainTable WHERE tMainTable.UniqueId EQ iCursor. 
DO i = 1 TO iMaxPageSize: 
    CREATE tPage. 
    BUFFER-COPY tMainTable TO tPage. 
END. 

/* DISPLAY */ 
FOR EACH tPage: 
    DISPLAY tPage.iNumber tPage.Name. 
END. 

이 프로그램의 기본입니다 : 여기

당신이 문제를 이해하는 데 도움이되는 몇 가지 의사 코드입니다. 이제 원하는 출력은 프레임을 표시하여 마지막 항목 바로 아래에서 끝납니다. 현재 기본 프레임을 사용하여 터미널 화면 맨 아래로 확장됩니다.

프레임을 인스턴스화하고 사용할 수있는 모든 논리 옵션을 교환 할 때 원하는 크기로 가져올 수는 있지만 항목을 별도의 줄에 표시 할 수는 없습니다. 대신 TEMP-TABLE의 마지막 레코드를 보여주기 때문에 마지막 행을 덮어 쓰고 같은 행에 각 항목을 표시합니다.

"iMaxPageSize DOWN"으로 프레임을 인스턴스화하려고했지만 아무런 효과가 없습니다. 이 특정 옵션을 조금 더 자세히 읽은 후에는 여러 테이블의 특정 필드가 아닌 테이블의 여러 필드를 표시하는 데만 사용할 수있는 것처럼 보입니다.

희망이 있으니까,이 일에 정말로 도움이 필요합니다.

답변

1

8 시간의 누적 읽기와 시행 착오 코딩이 필요했습니다.

FOR EACH tPage WITH 6 DOWN: 

나는 모두 필요한 것입니다.

여전히 FRAME을 인스턴스화 할 때 FOR EACH에서 사용하는 경우에도 하나의 레코드 만 표시 할 수 있습니다.

0

FIND/DO 조합은 사용자가 생각하는대로 수행하지 않습니다.

DEF TEMP-TABLE tMainTable. 
DEF TEMP-TABLE tPage LIKE tMainTable. 
DEF VAR iCursor AS INT. 
DEF VAR i AS INT.  
i = 0. 

FOR EACH tMainTable 
    WHERE tMainTable.UniqueId EQ iCursor 
    NO-LOCK: 

    i = i + 1. 
    IF i > maxpagesize THEN 
     LEAVE. 

    CREATE tPage. 
    BUFFER-COPY tMainTable TO tPage. 

END. 

    /* DISPLAY */ 

FOR EACH tPage: 
    DISPLAY tPage.iNumber tPage.Name 
     WITH DOWN. 
END. 
+0

예, 저의 1500 라인 프로그램은 매우 거친 요약이었습니다. 반복 및 페이지 작성 코드가 완벽합니다. 프레임 디스플레이에 대한 도움이 필요합니다. 감사. –

+0

다음을 사용하여 프레임 코드를 추가 : DEFINE FRAME f WITH DOWN 6./* tPage는 최대 6 */각 tPage의 FRAME f : DISPLAY/* 2 fields * /를가집니다. 종료. 출력은 항상 임시 테이블의 첫 번째 행에있는 마지막 레코드이며 그 밖의 것은 없습니다. –

+0

기본적으로 다음 두 가지 질문 중 하나를 묻습니다. 1. 명시 적으로 인스턴스화하지 않고 프레임의 크기를 제어하는 ​​방법이 있습니까? 또는 2. 명시 적으로 인스턴스화 된 프레임에 하나의 레코드 만 표시되는 이유는 무엇입니까 (테이블의 마지막 레코드). –

관련 문제