2013-07-09 2 views
2

PowerBuilder 10.5를 사용하고 있으며 내 창에 두 줄의 편집 (SLE) 필드 인 sle_date1sle_date2이 있습니다.오픈시 한 줄로 편집 날짜를 설정하십시오.

내 프로그램을 열면 필요한 두 필드가 채워져 있어야합니다. sle_date2은 오늘 값 (예 : 09.07.13)을 가져야하고 sle_date1 값은 (sle_date2 -30 일)이어야합니다 (예 09.06.13).

그래서 말했듯이 내 프로그램을 열면 두 필드가 모두 오늘 날짜의 값과 한 달 전의 날짜로 즉시 채워집니다.

어떻게하면됩니까? 날 좀 보내주기위한 조언이 있니?

답변

1
당신은 today() 될 수 지정된 날짜와 창
  • open() 경우에 편집을 채우기 위해 몇 가지 코드를 추가 할 수 있습니다
    • , 당신은 새로운 날짜 플러스/마이너스 RelativeDate()에 일 수를 계산할 수 있습니다

      :

    다음 코드는 (사용자의 입력의 핸들을 완화하는 것처럼 대신 singlelineedit의 일부 editmask 컨트롤을 사용하는 것이 더있을 수 있지만) 귀하의 질문에 대한 대답

    date ld_now, ld_previousmonth 
    string ls_datefmt 
    
    ls_datefmt = "dd.mm.yy" 
    ld_now = today() 
    sle_1.text = string(ld_now, ls_datefmt) 
    ld_previousmonth= RelativeDate(ld_now, -30) 
    sle_2.text = string(ld_previousmonth, ls_datefmt) 
    

    이 때 09.07.1309.06.13이 표시됩니다.

  • +0

    , 대단히 감사합니다! –

    +0

    안녕하세요. 한 가지 더 물어볼 필요가 있습니다. 두 개의 슬립 필드는 쓰기 가능하므로 클라이언트는 다른 기본 날짜를 쓸 수 있습니다. date1과 date2의 차이가 최대 1 년 또는 365 일이라는 조건을 어떻게 설정할 수 있습니까? –

    +1

    컴퓨터에서 여러 가지 방법으로 작업하는 경우가 많습니다 ... 창에 함수를 추가하여 날짜 차이를 계산하고 차이가 너무 큰 경우 메시지를 표시합니다. 함수를 호출하려면 두 함수 모두를 호출하는'pbm_enchange' 이벤트에 이벤트를 매핑하십시오. 입력 된 각각의 문자에 반응하고 싶다면'pbm_enmodified' 이벤트를 매핑 할 수도 있습니다. – Seki

    1

    먼저 창을 열어야합니다. 당신은 당신의 응용 프로그램 open 이벤트에서이 넣어이 코드에 (창문이 w_main 것을 가정하자) 할 수 있습니다

    open(w_main) 
    

    를 창문의 오픈 이벤트에 넣어이 코드에 그 후 :

    sle_date1.text = string(today()) 
    sle_date2.text = string(RelativeDate(Today(), -30)) 
    

    I 이것이 당신의 문제를 해결한다고 생각하십시오. 여기 RelativeDate에 대한 약간의 도움이 : 이것은 나를 위해 그것을했다

    http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.pocketbuilder_2.0.pkpsref/html/pkpsref/pkpsref662.htm

    안부 가보

    +1

    일시 변수가없는'string()'안에서 함수 호출을 직접 사용하면 추적하기가 더 어렵습니다. 또한'today() '를 두 번 호출하여 두 가지 다른 날짜를 얻을 수 있습니다. 물론'today() '에서는 일어나지 않을 것입니다. 그러나 datetimes 나 times를'now()'와 함께 사용하면 이상한 결과가 발생할 수 있습니다 ... – Seki

    +0

    맞습니다. 내 솔루션은 오히려 빠르고 다음 sofisticated입니다! – DARKinVADER

    관련 문제