向COM方法中传递数组参数

一个客户的销售订单和采购订单要求工作流审核才能发货或收货,要求跟OA系统的工作流整合,在Axapta中启动流程,在工作流中签核,签核完毕后再回写Axapta相应单据的信息.
今天弄了一下,由于OA是用VB+ASP写的,所以在启动流程的时候需要调用COM,Axapta提供了COM这个类来调用COM,实现起来倒挺容易的,不过在传递数组参数的时候遇到了些麻烦.
工作流的COM提供的启动流程的方法是用字符串数组的形式接收流程相关信息的,开始的时候用如下代码调用:
None.gif  COM workFLow;
None.gif    str 
100  dataArray[ 1 ];
None.gif   ;
None.gif
None.gif    dataArray[
0 =   " orderNo = FlowTest " ;
None.gif    workFLow 
=   new  Com( " workFlow " );
None.gif    workFLow.startProcess(dataArray);
它告诉我:COM(Object),Method called startprocess with invalid parameter.
后来想想也是,Axapta的数组也够怪异的,跟VB的数组肯定不是一回事,后来看了一下还好有一个COMVariant可以用一下,用COMVariant实现一个数组就run起来了.代码如下:
None.gif Array arr  =   new  Array(Types::Class);
None.gif    COMVariant comVar;
None.gif    ;
None.gif    comVar 
=   new  COMVariant();
None.gif    comVar.bStr(strFmt(
" PackNo=FlowTest " );
None.gif    arr.value(
1 ,comVar);
None.gif
None.gif    comVar 
=   new  COMVariant();
None.gif    comVar.safeArray(arr,COMVariantType::VT_VARIANT);
然后把得到的comVar作为参数传进去就OK了.

转载于:https://www.cnblogs.com/Farseer1215/archive/2006/10/13/528562.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值