【PB】获取DW.DS的参数名、类型、参数的值

来源:互联网 发布:淘宝资生堂官网旗舰店 编辑:程序博客网 时间:2024/06/07 23:39
public function integer of_dwgetarguments (ref powerobject apo_aux, ref string as_argnames[], ref string as_argdatatypes[], ref string as_argvalues[]);//====================================================================// 事件: n_dwget_argument.of_dwgetarguments()//--------------------------------------------------------------------// 描述: 获取DW.DS的参数名、类型、参数的值//--------------------------------------------------------------------// 参数://  reference powerobject apo_aux           DW or DS//  reference string      as_argnames[]     名称//  reference string      as_argdatatypes[] 类型//  reference string      as_argvalues[]    值//--------------------------------------------------------------------//====================================================================string       ls_dwargs, ls_dwargswithtype[], ls_args[], ls_types[]long         ll_a, ll_args, ll_pos, ll_index// Comprobamos los argumentos.if IsNull(apo_aux) or not IsValid(apo_aux) then   return -1end if// Obtenemos el string con los argumentos del dw o ds.ls_dwargs = apo_aux.DYNAMIC Describe ( "DataWindow.Table.Arguments" ) // Separamos los argumentos utilizando la un array y obtenemos el número total.ll_args = of_ParseToArray ( ls_dwargs, "~n", ls_dwargswithtype ) // Ahora separamos el nombre del argumento de su tipo y además obtenemos el valor.For ll_a = 1 to ll_args   ll_pos = PosA ( ls_dwargswithtype[ll_a], "~t", 1 )   If ll_pos > 0 Then      ll_index = UpperBound(as_argnames) + 1      as_argNames[ll_index]      = LeftA ( ls_dwargswithtype[ll_a], ll_pos - 1 )       as_argDataTypes[ll_index] = MidA ( ls_dwargswithtype[ll_a], ll_pos + 1 )             // Cargamos el valor correspondiente. Si es de tipo array ponemos cadena vacía.      If rightA(as_argDataTypes[ll_index], 4) = 'list' Then         as_argValues[ll_index] = ''      Else         as_argValues[ll_index] = apo_aux.DYNAMIC Describe("evaluate('" + as_argNames[UpperBound(as_argnames)] + "',1)")       End If   End If  NextReturn UpperBound ( as_argnames )end function