2016-06-20 6 views
-1

Visual Fox Pro에서 프로그램 관련 기능을 해결하는 데 문제가 있습니다.Visual Fox Pro에서 라운드 분 20 초에

십진수로 20 분마다 반올림해야합니다. 예를 들면 : 나는 19 분 (0.316) recive 0 분 반환해야합니다. 내가 0-19 분 사이에 도착하면 0 분을 반환합니다. 20 분에서 39 분 사이에 도착하면 20 분을 반환합니다. 40-59 분 사이에 도착하면 40 분을 반환합니다. 60 분에서 79 분 사이에 도착하면 돌아옵니다. 60 분

나는 ROUND()를 사용하려고 생각했지만 "Round"가 가장 가까운 십진수로 접근하기 때문에 어떻게해야할지 모르겠다.

미리 감사드립니다.

+0

암을 확인했지만, 경우가 5백분 라운드 원하는 정답

roundedMinutes = Floor(m.myMinute/20) * 20 

을 준 ...? IIF (VAR1> 0, IIFBETWEEN (VAR1,0,0.3166), 0, IIF (BETWEEN (VAR1), 0.3333,0.8166), 0.3333,0)), 0) –

답변

1
roundedMinutes = Floor(m.myMinute/20) * 20 

:

Create Cursor SampleMin (minutes i, rounded i) 
Local ix 
For ix = 1 To 600 
    Insert Into SampleMin ; 
     (minutes, rounded) ; 
     values ; 
     (m.ix, Floor(m.ix/20) * 20) 
Endfor 

Locate 
Browse 
+0

답변이 완벽하게 작동합니다. 너무 감사드립니다. 매우 간단합니다. –

0

내가 만든 작은 prg은 당신을 도울 것입니다. 아니면 적어도 올바른 방향으로 당신을 시작할 것입니다. 수신 된 값이 lnStartlnEnd 내 사이 인 경우

lnStart    = 0 
lnEnd    = 20 
lnReceivedMinutes = 500 
llNotDone   = .T. 

IF lnReceivedMinutes > 0 
    DO WHILE llNotDone 
     IF BETWEEN(lnReceivedMinutes, lnStart, lnEnd) 
      llNotDone = .F. 
      MESSAGEBOX(ALLTRIM(STR(lnStart)) + " Minutes") 
     ELSE 
      lnStart = lnStart + 20 
      lnEnd = lnEnd + 20 
     ENDIF 
    ENDDO 
ENDIF 

나는 확인하십시오. 그렇지 않으면 다음 20 분 동안 확인합니다. 예를 들어

+0

정말 고마워요! 완벽하게 작동하십시오 –

0

세틴 Basoz 나 자신이를 사용하여

관련 문제