728x90
반응형

/*--------------------------------------------------------------------- 
   Json Rest API
 ---------------------------------------------------------------------*/
OleObject lole_SrvHTTP
String ls_status, ls_response, ls_arg, ls_url
ls_arg = '{ "USER_NM": "xxxxxxx@xxxx.co.kr"}}'
ls_url = 'https://nexthr-apix.singlex.com/nexthr/hr-xmti/dev/xmti/v1/gw/org/LG01'
lole_SrvHTTP = CREATE  OleObject
lole_SrvHTTP.connectToNewObject("MSXML2.ServerXMLHTTP.6.0")
lole_SrvHTTP.Open('POST', ls_url, FALSE)
lole_SrvHTTP.SetRequestHeader( "Content-Type", "application/json")
lole_SrvHTTP.SetRequestHeader( "x-apikey", "xxxxxxxxxxxx")
lole_SrvHTTP.setOption(2,'13056') 
lole_SrvHTTP.send(ls_arg)
ls_status   = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
/*------------------------------------------------------------------------------------
  Datawindow로 자료 생성 
--------------------------------------------------------------------------------------*/
Reset()
long    p1, p2, row
string  ls_json, ls_Row[], ls_Cdata, item 
string  ls_Cols[]={"RSLTDT","HR_ORG_CD","PARENT_HR_ORG_CD","ORG_NM","ENG_ORG_NM","ORG_SORT","LCTN_CD","MGR_EMP_NO","DEPT_USEYN","LEVEL","PATH_HR_ORG_CD","PATH_ORG_NM","PATH_ENG_ORG_NM","PARENT_ORG_NM","PARENT_ENG_ORG_NM","MGR_EMP_NM"}
integer i, i_max, j, j_max
ls_json = of_replace(ls_response,'[','')
ls_json = Trim( of_replace(ls_json,']','') )
messagebox("확인",ls_json)
/*------------------------------------------------------------------------------------
  구분자로 되어 있는 String -> String Array
i_max = StringToArray( ls_json, '},', ls_Row[])
--------------------------------------------------------------------------------------*/
DO WHILE ls_json <> '' 
   item = Trim ( f_getfirstitem( ls_json, '},' )  )
   IF item = '' THEN 
   ELSE 
      i_max ++ 
      ls_Row[i_max] = item 
   END IF 
LOOP 
/*------------------------------------------------------------------------------------
  Datawindow 에 자료 추가 
--------------------------------------------------------------------------------------*/
j_max = UpperBound(ls_Cols[])
FOR i = 1 TO i_max
   ls_Row[i] = of_replace(ls_Row[i],'{'   ,'')
   ls_Row[i] = of_replace(ls_Row[i],'}'   ,'')
   ls_Row[i] = of_replace(ls_Row[i],'~r~n','')
   ls_Row[i] = of_replace(ls_Row[i],',"'  ,'^')
   ls_Row[i] = of_replace(ls_Row[i],'"'   ,'') + '^'
   
   row = Insertrow( 0 )
   FOR j = 1 TO j_max 
      // Column data  
      p1    = Pos( ls_Row[i], ls_Cols[j] )
      p2    = Pos( ls_Row[i], '^', p1 )
      ls_Cdata = Mid( ls_Row[i], p1, p2 - p1 )
      f_getfirstitem( ls_Cdata, ':' )  // ls_Cdata = Trim( f_nth(ls_Cdata,':',2) )
      ls_Cdata = Trim( of_replace(ls_Cdata,',','') )
      CHOOSE CASE j
         CASE 1
            CHOOSE CASE ls_Cdata
               case '1' ; Setitem(row, j, '성공')
               case '2' ; Setitem(row, j, 'Data코드오류')
               case '3' ; Setitem(row, j, '인증코드오류')
               case '4' ; Setitem(row, j, '일일제한횟수마감')
            end choose
         CASE 7, 11 //number
            Setitem(row, j, integer(ls_Cdata))
         CASE 2, 3     //char
            Setitem(row, j, ls_Cdata)
         CASE ELSE     //decimal
            Setitem(row, j, Dec(ls_Cdata))
      END CHOOSE
   NEXT 
NEXT 
Sort()
DESTROY lole_SrvHTTP


lole_SrvHTTP.setOption(2,'13056') //  https 연동시 ssl 인증서가 정상 설치 되지 않은 경우 인증서 무시 옵션

lole_SrvHTTP.send(ls_arg)
ls_status   = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
DESTROY lole_SrvHTTP


이거 없으면 연동 안됨.



728x90
반응형
아는게 힘이긴하다. 그런데 자주 까먹는다. 까먹는 부분에 대해서
정리를 하기도 힘들다...그냥 블로그에 올리자....그게 답이다.
 
DataWindow presentation styles구분설명
Composite 다른 기본 데이터윈도우들을 포함할 수 있는 데이터윈도우 오브젝트 형태이다.
저자주)
이 형태는 출력물로만 가능하며, 갑지/을지가 존재할 경우에 두 개의 데이터윈도우를 페이지를 이어서 붙일 수 있다.
하지만, 사용시에 데이터 및 텍스트에 대한 수정이 용이하지 않고, 순서대로 조회가 되므로, 인사기록카드와 같은 한사람씩 여러정보를 출력하는 형태의 컴포지트에서는 동시에 여러명을 조회해서 출력할 수가 없게 된다.
Crosstab 그리드 같은 스프레드시트에 데이터별 집계등을 표현할 수 있는 데이터윈도우 오브젝트 형태이다.
Freeform 데이터 컬럼이 페이지 아래로 배열되고, 해당 라벨이 그 옆에 표시되도록 하는 데이터윈도우 오브젝트 형태이다.
저자주)
가장 자주 쓰는 형태중의 하나로, Detail 밴드만을 주로 사용하는 형태를 일컫는다. 개발자가 말 그대로 자유롭게 양식을 그리고, 컬럼 위치를 잡아서 사용할 수 있다.
Graph 그래프로 데이터를 표현하는 데이터윈도우 오브젝트 형태이다.
Grid 행과 열로 분리된 그리드 라인에 데이터를 표현하는 데이터윈도우 오브젝트 형태이다.
저자주)
가장 자주 쓰는 형태중의 하나로, 엑셀을 생각하면 된다. 컬럼 너비를 사용자가 임의로 조절 할 수 있으며, 위치를 이동시킬 수 있다. 허나, 두개의 컬럼이 같은 위치에 존재하지 못하는 등의 제약은 있다.
Group 그룹으로 분리된 row 에 데이터를 표현하는 데이터윈도우 오브젝트 형태이다.
Label 라벨처럼 데이터를 표현하는 데이터윈도우 오브젝트 형태이다.
저자주)
주소룰 출력하여, 라벨을 붙이는 것을 생각하면 되겠다.
N-Up 둘이상의 row 데이터를 각각 옆에 표현하는 데이터윈도우 오브젝트 형태이다.
저자주)
여러 row의 데이터를 하나의 Detail 밴드에 표현할 수 있으며, 그 형태가 N자형으로 되었다고 해서 N-Up이라 불리운다. 허나, 이를 잘 활용하면, 탭헤더 대용으로도 사용할 수 있다.(다만, row갯수가 고정이여야 한다는 제약이 있다.)
OLE 2.0 하나의 OLE 오브젝트이다.
RichText 여러가지 양식이 있는 DB의 데이터를 표현해 줄 수 있는 데이터윈도우 오브젝트 형태이다.
Tabular 한 페이지에 데이터를 표현할 수도 있고, 헤더에 컬럼을 표현할 수 있도록 하는 데이터윈도우 오브젝트 형태이다.
저자주)
가장 자주 쓰는 형태중의 하나로, 쉽게 생각하면, Freeform에서 header, footer 밴드를 사용한다고 생각하면 되겠다.
그렇게 함으로써, Grid의 header 반복효과를 같이 누릴 수 있으며, 다른 컬럼간의 동일한 위치 배열도 할 수 있다.
허나, 기본적으로 컬럼 너비는 조절할 수가 없게 되어있다. 최근에는 이러한 문제를 해결한 dw 조상 오브젝트가 유행이다.
TreeView 트리뷰내의 row에 그룹화된 데이터를 표현할 수 있으며, 트리뷰처럼 펼치거나 접을 수 있도록 한 데이터윈도우 오브젝트이다.
 

뒤에 데이터윈도우 만들기 강좌에서 다루겠지만, 파워빌더를 실행해서,

메뉴의 file>new를 선택한 다음, DataWindow 탭을 선택하면, 위에 설명한 타입의 데이터윈도우들이 나열되어 있다.

각 아이콘은 해당 데이터윈도우의 특징을 잘 보여준다고 할 수 있다.

 

하지만, 위에 열거된 형태의 타입은 기본적으로 제공하는 템플릿일 뿐이고, 데이터윈도우 오브젝트의 속성을 잘 파악하면 훨씬 자유롭게 표현하고자 하는 것을 표현할 수 있다.

 

728x90
반응형

디스플레이의 가독성은 인접한 행의 배경색을 번갈아 가며 개선할 수 있습니다.

 AlternatingRows 속성이 True 로 설정 되면 그리드는 기본 제공 스타일 OddRow를 사용하여 홀수 행(첫 번째 표시되는 행은 1)을 표시하고 기본 제공 스타일 EvenRow를 사용하여 짝수 행을 표시합니다.

728x90
반응형

PB Native에서 Check out을 하였는데 오류 메세지 발생

이리저리 보아도 문제는 없었음. 확인 내용

Source Control System = PB Native
userid = master
Project = Q:\DEVELOP\PDAT-EMTALA
Local root Directory = Q:\DEVELOP\PDAT-EMTALA

문제 없음, 그러나 Project 파일 네트워크 드라이브 연결 시 권한이 Read only로 되어 있음을 발견

Read only는 GetLastVesrion은 가져오나 Check in / out은 되지 않음.

수정완료

728x90
반응형


파워빌더를 실행하거나 특정 오브젝트를 열 때, 아무런 이유 없이 다운될 때가 있습니다.

대체로 파워빌더 레이아웃에 순간적인 문제가 생겨서 발생하는 현상입니다.


1. 특정 Object 를 열면 다운될 때 (Datawindow 를 열면 자주 발생)

   윈도우키 + R - regedit : 레지스트리 편집기 오픈

   레지스트리 - HKEY_CURRENT_USER - Software - Sybase - PowerBuilder - Layout - Default

   열리지 않는 Object 값 삭제

-> 파워빌더 실행해서 그 Object를 다시 열면 디폴트 레이아웃으로 변경되어 있습니다.


2. 파워빌더를 실행함과 동시에 다운될 때

   윈도우키 + R - regedit : 레지스트리 편집기 오픈

   레지스트리 - HKEY_CURRENT_USER - Software - Sybase - PowerBuilder - Workspace - 버전

   다운되는 Workspace 폴더 삭제

-> 파워빌더 실행해서 Workspace 를 다시 오픈하면 됩니다.

728x90
반응형

728x90
반응형

PBCLTRT100.msi
7.98MB

powerbuilder accessibility error 해결방법

윈도우8에는 powerbuilder accessibility error가 발생한다.

PBACC105.DLL를 설치 후 해결이 되었다.


728x90
반응형

회사에서 파워빌더로 프로그래밍을 하다보면 파워빌더를 실행해서 특정 오브젝트나 윈도우를 열면 아무런 이유없이 응답없음으로 변경되다가 다운될 때가 있다.

이 때 열려고 하는 오브젝트나 워크스페이스에 문제가 있는 것으로 아래와 같이 조치를 해주면 된다.

1. DataWindow 및 특정 오브젝트를 열면 다운됨.

  '실행' 에서  regedit 입력하여 레지스트리 편집기 실행

HKEY_CURRENT_USER - Software -Sysbase - PowerBuilder - Layout -Default - 열리지 않는 오브젝트 삭제

2. 파워빌더를 실행함과 동시에 다운됨.

  '실행' 에서  regedit 입력하여 레지스트리 편집기 실행

HKEY_CURRENT_USER - Software -Sysbase - PowerBuilder - Workspace - 다운되는 workspace 를 삭제

파워빌더를 실행해서 workspace를 다시 열면 됨.

 

+ Recent posts