GUI sin

//clicked() script

STRING cConKind, cRegion, cRoomType, ls_newsql
DataWindowChild dwc  

CHOOSE CASE dwo.name

//콘도이용지역
 CASE 'region'

         THIS.AcceptText() 
   cConKind = THIS.GetItemString(THIS.getrow(), 'con_kind')
   
   THIS.getchild('region', dwc)  // dcode
   dwc.SetTransObject(sqlca)
   
   ls_newsql = " SELECT datachkd.dcode,         " + &
       "        datachkd.dname,         " + &
       "   datachkd.hcode,         " + &
       "   datachkd.dname1,        " + &
       "   datachkd.dvalue,        " + &
       "   datachkd.hdcode,        " + &
       "   datachkd.relate_code1,  " + &   
       "   datachkd.relate_code2,  " + &
       "   datachkd.fix_code1,     " + &
       "   datachkd.fix_code2      " + &
       "  FROM datachkd                " + &
       "  WHERE datachkd.hcode = 'H753' " + &
       "   and datachkd.relate_code1 like '"+ cConKind +"'"  
       
   dwc.setsqlselect(ls_newsql)    
   dwc.Retrieve()
   
end choose

Comment +0

DataWindow의 Summary나 Footer의 Computed Field 값 가져오는 방법입니다. 주의할점은 row 가 없으면 오류가 나더군요. 당연한건가?-_-; 그래서 저는 IF 문으로 처리해주었습니다.

Test = DataWindowName.Object.Computed Filed[1]

사용 예) 경력 통계 화면에서 사용된 스크립트 입니다.

  IF nRowCount > 0 THEN
   nYy = Long(Left(dw_hcareer.object.workyymm[1], 2))    //년
   nMm = Long(mid(dw_hcareer.object.workyymm[1], 3, 2))   //월
   
   nWorkYy = nWorkYy + nYy
   nWorkMm = nWorkMm + nMm

   //최종경력환산
   nTotYy = Long(string(nWorkYy + truncate(nWorkMm / 12, 0),'00') + string(mod(nWorkMm, 12),'00'))

   //경력이 등록되어 있는 사람만 경력을 가져온다.
   SELECT hperule.person
     INTO :nValue
     FROM hperule
    WHERE hperule.f_rate <= :nTotYy
    AND hperule.t_rate > :nTotYy;

  ELSEIF nRowCount <= 0 THEN

   //경력이 등록되어있지 않을경우 근속년월만 가지고 산정한다.
   SELECT hperule.person
     INTO :nValue
     FROM hperule
    WHERE hperule.f_rate <= :nWorkYy
    AND hperule.t_rate > :nWorkYy;
   
  END IF

Comment +0

Replace ( string1, start, n, string2 )

string1 : 치환의 대상이 될(source) string 값(string)
start : 치환 될 문자의 시작 자리 수(number)
n : 치환 될 문자의 끝 자리 수(number)
string2 : 치환 할 문자(string)

사용 예제
string Name
Name = "Davis"
Name = Replace(Name, 4, 2, "e")
//Davis 를 Dave 로 치환

Replace("BABE RUTH", 1, 4, "BABY")
//BABY RUTH 를 반환

Replace("Closed for Vacation", 12, 8, "the Winter")
//Closed for the Winter 를 반환

Replace("ABCDEF", 3, 2, "ZZZZ")
//ABZZZZEF 를 반환

Replace("ABCDEF", 3, 50, "ZZZZ")
//ABZZZZ 를 반환

Replace("ABCDEF", 50, 3, "ZZZZ")
//ABCDEFZZZZ 를 반환

Comment +0

RelativeDate ( date, n )

date : 가감할 일자 (date type)
n : 가감할 일수(number)

사용 예제
RelativeDate(1990-01-31, 10)
1990-02-10 를 반환 합니다.

RelativeDate(1990-01-31,  - 10)
1990-01-21 를 반환 합니다.

Comment +0

//********************************************************************************
//기본 연결
//open()

database_test = CREATE transaction

database_test.DBMS = "MSS Microsoft SQL Server"
database_test.Database = "sample_database"
database_test.LogPass = "abcd1234"
database_test.ServerName = "192.168.1.100"
database_test.LogId = "sa"
database_test.AutoCommit = False
database_test.DBParm = ""

CONNECT USING database_test;

//Connection Check
IF database_test.SQLCode <> 0 THEN
   MessageBox( "database_test 연결 실패!", &
   "database_test 를 연결할 수 없습니다. ~r" + database_test.SQLErrText)
   RETURN
END IF



//********************************************************************************
//insert_after()
//sequence 번호 부여

SELECT ISNULL(MAX(SEQ), 0) + 1 INTO :nSEQ
FROM [TableName]
using database_test;



//********************************************************************************
//update()
//update check 및 rollback

IF This.update() = 1 THEN
   COMMIT USING database_test;
ELSE  
   ROLLBACK USING database_test;
END IF

RETURN TRUE



//********************************************************************************
//Declare Instance Varibles
//인스턴스 변수 선언

Transaction database_test

Comment +0

사용자 삽입 이미지

retrieveend() 에서 SetItem()을 사용하면 그림처럼 [수정] 이라는 글씨가 보인다.

사용자 삽입 이미지

SetItemStatus() 사용으로 수정이 안된것처럼 속일수 있다.


FOR nRow = 1 TO This.rowcount()
   This.SetItemStatus(nRow, 0, Primary!, NotModified!)
NEXT

Comment +0