金蝶 凭证相关代码转化 VB 转化为C# ole 编程

haha20 2009-01-21 10:52:00
//创建凭证 已实现
System.Type oType = System.Type.GetTypeFromProgID("Mvedit.MVoucherEdit");
object o = System.Activator.CreateInstance(oType);
//调用凭证新增界面
oType.InvokeMember("LoadVoucher", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] { 0, null, null, null, null });

//创建凭证 并添加凭证数据 请问 创建凭证 代码转化处理 VB 代码如下:
'建立界面显示凭证数据
Private Function CreateVoucher() As Object
Dim Voucher As Object '凭证对象
Dim VoucherEntrys As Object '凭证分录对象
Set Voucher = CreateObject("EBCGL.Voucher")
Voucher.Construct Nothing, Nothing '建立凭证数据对象
Set VoucherEntrys = Voucher.Entries '设置凭证分录对象
Voucher.InternalInd = "Super" '机制凭证信息(可选)
'设置凭证默认日期(可选)
' Voucher.TransDate = Format(Now, "yyyy-mm-dd") '业务日期
' Voucher.VoucherDate = Format(Now, "yyyy-mm-dd") '凭证日期
Voucher.GroupID = CboGroup.ItemData(CboGroup.ListIndex) '凭证字
Voucher.Number = Val(TxtNumber.Text) '凭证号

'下面输入凭证分录数据
'借方分录数据
Dim Acct1 As Long, Acct2 As Long
GetRndAccountID Acct1, Acct2
If Acct1 * Acct2 = 0 Then Exit Function
VoucherEntrys.Add
With Voucher.Entries(Voucher.Entries.Count)
.Explanation = "凭证录入检测-分录1"
.AccountID = Acct1
.Amount = 100
.AmountFor = 100
.ExchangeRate = 1
.CurrencyID = 1
.DC = 1 '借方
End With
'贷方分录数据
VoucherEntrys.Add
With Voucher.Entries(Voucher.Entries.Count)
.Explanation = "凭证录入检测-分录1"
.AccountID = Acct2
.Amount = 100 '本位币
.AmountFor = 100 '原币
.ExchangeRate = 1 '汇率
.CurrencyID = 1 '币别
.DC = 0 '贷方
End With
Set CreateVoucher = Voucher
End Function

//另外请问 如果科目又核算项目 怎么添加核算项目 ^_^ 分不多,还请大侠 不吝赐教
...全文
334 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaokan166 2011-12-13
  • 打赏
  • 举报
回复
因为这年头,懂vb的甚是少见。
haha20 2009-01-21
  • 打赏
  • 举报
回复
主要是 凭证分录 和 科目核算项目的处理 谢谢!
haha20 2009-01-21
  • 打赏
  • 举报
回复
楼上兄弟 我加你为好友 本贴 只有你一个人支持我 ^_^ 谢谢 !
wangping_li 2009-01-21
  • 打赏
  • 举报
回复
你EditObject是什么?怎么有未设置对象变量?
haha20 2009-01-21
  • 打赏
  • 举报
回复

运行时错误 91 未设置对象变量 或者with block 变量
haha20 2009-01-21
  • 打赏
  • 举报
回复
以上问题已经解决 但是在建立凭着挂你输入对象时 通不过:

object objVoucher = CreateVoucher();

System.Type oTypeRel = System.Type.GetTypeFromProgID("KDVBF.Relevancy");
object objRel = System.Activator.CreateInstance(oTypeRel);
oTypeRel.InvokeMember("MultiEdit", System.Reflection.BindingFlags.SetProperty, null, objRel, new object[] { false });
//下面一行代码无法通过 请高手指点 虽然 曾经试过 直接引用 KDVBF
/*
KDVBF.RelevancyClass objRel = new KDVBF.RelevancyClass();
objRel.EditObject = objVoucher;//设置凭证数据对象到Rel参数
objRel.MultiEdit = false;//是否允许多张凭证编辑
*/ 但有时 会提示错误 lock 类的错误
oTypeRel.InvokeMember("EditObject", System.Reflection.BindingFlags.SetProperty, null, objRel, new object[] { objVoucher });

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧