[ 파워빌더.DataWindow - RowsCopy ]

 

☞   

 

같은 DW를 복사할려면 RowsCopy를 사용합니다.

헌데 같은 테이블을 쓰지만 한쪽은 조인되어 있고 한쪽은 그냥 한개의 테이블이다.

보통 엑셀로 자료를 내릴때 불편하지요

복사되는 DW의 컬럼을 기준으로 원본에서 자료를 복사해 봤습니다.

 

PS,. 이름이 다르더라도 컬럼번호를 이용하는 방법도 있습니다.

 

//wf_savecopy(adw, tdw)
string ls_objects, ls_column[], ls_col, ls_coltype
long   ll_pos, row, irow
integer i
tdw.Reset()
ls_objects = tdw.describe ("Datawindow.Objects")
ls_objects += '~t'
ll_pos = 0 ; ll_pos = pos(ls_objects, '~t')
Do While ll_pos > 0
 ls_col = Left(ls_objects, ll_pos - 1 )
 if tdw.describe(ls_col + ".type") = 'column' then
  ls_column[UpperBound(ls_column) + 1] = ls_col
 end if
 ls_objects = Mid(ls_objects, ll_pos + 1 )
 ll_pos = 0
 ll_pos = pos(ls_objects, '~t')
Loop

for row = 1 to adw.rowcount()
 irow = tdw.insertrow(0)
 for i = 1 to UpperBound(ls_column)
  ls_coltype = tdw.describe(ls_column[i] + ".coltype")
  if pos(ls_coltype,'(') > 0 then ls_coltype = Left(ls_coltype, pos(ls_coltype,'(') - 1)
  choose case ls_coltype
   case 'decimal'
    tdw.SetItem(irow, ls_column[i], adw.GetItemDecimal (row, ls_column[i]) )
   case 'number', 'long'
    tdw.SetItem(irow, ls_column[i], adw.GetItemNumber  (row, ls_column[i]) )
   case 'char'
    tdw.SetItem(irow, ls_column[i], adw.GetItemString  (row, ls_column[i]) )
   case 'date'
    tdw.SetItem(irow, ls_column[i], adw.GetItemDate    (row, ls_column[i]) )
   case 'datetime'
    tdw.SetItem(irow, ls_column[i], adw.GetItemDateTime(row, ls_column[i]) )
  end choose
 next
next

 

Posted by 농부지기
,