25 Aralık 2009 Cuma

Bir datawindow'dan diğerine değerleri kopyalamak.

Bir datawindow'un aktif satırından diğer datawindow'un aktif satırına değerleri kopyalayan f_dw_copy fonksiyonu. Değerler dw_source datawindow'dan dw_target datawindow'a kopyalanır. source_column ve target_column belirtilirse sadece bu iki kolon arasında değer aktarılır, kolonların belirtilmemesi durumunda iki datawindow'da sadece adları eşleşen kolonlarda değerler kopyalanır.
f_dw_copy kaynak kod:
=====================

$PBExportHeader$f_dw_copy.srf
global type f_dw_copy from function_object
end type
forward prototypes
global function integer f_dw_copy (ref datawindow dw_source, ref datawindow dw_target, string source_column, string target_column)
end prototypes
global function integer f_dw_copy (ref datawindow dw_source, ref datawindow dw_target, string source_column, string target_column);/* dw_source datawindow daki tüm kolonların değerini
dw_target datawindow daki eşleşen kolonlara kopyalar.
source_column belirtilir ise sadece verilen isimdeki kolonu kopyalar. */
string ls_names, ls_object, ls_name, ls_type
if dw_source.rowcount() = 0 or dw_target.rowcount() = 0 then return -1
if source_column = '' or isnull(source_column) then
ls_names = dw_source.Describe ("datawindow.objects")
else
ls_names = source_column
end if
Do
ls_object = f_get_token (ls_names, "~t")
if dw_source.describe(ls_object + ".type") = "column" then
if target_column = '' or isnull(target_column) then
ls_name = ls_object
else
ls_name = target_column
end if
if dw_target.describe(ls_name + ".type") = "column" then
ls_type = mid(dw_source.describe(ls_object + ".coltype"),1,5)
choose case ls_type
case "char("
dw_target.setitem(dw_target.getrow(),ls_name, dw_source.getitemstring(dw_source.getrow(),ls_object))
case "numbe", "long", "real", "ulong"
dw_target.setitem(dw_target.getrow(),ls_name, dw_source.getitemnumber(dw_source.getrow(),ls_object))
case "decim"
dw_target.setitem(dw_target.getrow(),ls_name, dw_source.getitemdecimal(dw_source.getrow(),ls_object))
case "datet"
dw_target.setitem(dw_target.getrow(),ls_name, dw_source.getitemdatetime(dw_source.getrow(),ls_object))
case "date"
dw_target.setitem(dw_target.getrow(),ls_name, dw_source.getitemdate(dw_source.getrow(),ls_object))
case "time"
dw_target.setitem(dw_target.getrow(),ls_name, dw_source.getitemdatetime(dw_source.getrow(),ls_object))
end choose
end if
end if
Loop Until ls_names = ""
dw_target.accepttext()
return 0
end function

Hiç yorum yok:

Yorum Gönder