您的位置: 龙岩金蝶软件论坛 -> 企业管理软件区域 -> VB交流 -> K3老单单据赋值方法总结
本帖共有367个阅读者
发表帖子 发表投票 回复主题
K3老单单据赋值方法总结
尊贵身份标志
cyy275(管理员)
cyy275
头衔:社区公民
帮派:无帮无派
帖数:497
金钱:100000
积分:2248
注册时间:2017-5-8
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
K3老单单据赋值方法总结

1、单据头字段赋值

m_BillTransfer.SetHead Index, Value

备注: Index:表头控件索引
Value:设置的值。如果该表头项是查找类型的,Value 应设置为代码。


2、单据体赋值

m_BillTransfer.SetGridText Row, Col, Value

备注: Row:分录行
Col:分录列
Value:设置的值。如果该单元格是查找类型的,Value 应设置为代码。


3、单据体合计字段赋值

m_BillTransfer.SetSumGridText Row, Col, Value

备注: Row:分录行
Col:分录列
Value:设置的值


4、给查找类型字段(基础资料)赋值

用SetGridText直接赋值一般情况下也可以,但有时会导致显示异常,建议使用下面的方法。以给物料字段赋值为例,参考以下代码:

Dim EntryCtl As Variant

EntryCtl = m_BillTransfer.EntryCtl

EntryCtl(ItemCol).DInterID(i) = rs.Fields("FItemID").Value & ""

EntryCtl(ItemCol).DNumber(i) = rs.Fields("FNumber").Value & ""

EntryCtl(ItemCol).DName(i) = rs.Fields("FName").Value & ""

m_BillTransfer.EntryCtl = EntryCtl

m_BillTransfer.SetGridText i, ItemCol, rs.Fields("FNumber").Value & ""


5、单据头字段,在查找时改变其Filter 属性值

Private Sub m_BillTransfer_BeforHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)
Dim THeadCtl As Variant
Dim i As Long
If CtlIndex = 4 Then
THeadCtl = m_BillTransfer.HeadCtl
THeadCtl(CtlIndex).Filter = Replace(THeadCtl(CtlIndex).Filter, 986=986”, “986<>986”)

m_BillTransfer.HeadCtl = THeadCtl‘
End If

End Sub


6、改变辅助属性的值

Set tmpItemInfo = New KFO.Dictionary
tmpItemInfo("Name") = "黄色"'辅助属性名称
tmpItemInfo("Number") = "YELLOW"'辅助属性代码
tmpItemInfo("Value") = "2"'辅助属性内码
m_BillTransfer.BillForm.SetBillDataInput tmpItemInfo,"FAuxPropID", 1, 1

Set tmpItemInfo = Nothing

备注:

在插件中改变辅助属性的值,对表体的赋值有的不能按照m_BillTransfer.SetGridText的形式修改,一定要调用m_BillTransfer.BillForm.SetBillDataInput方式才可以真正修改,SetBillDataInput 辅助属性包,字段名,单据体(0:单据头;1:单据体),行号。


7、单据体多行数据赋值

For i = 1 To rs.RecordCount

m_BillTransfer.SetGridText i, 3, CStr(rs.Fields.Item(0).Value) '物料代码

m_BillTransfer.SetGridText i, 8, CStr(rs.Fields.Item(1).Value) '批号

m_BillTransfer.SetGridText i, 17, rs.Fields.Item(2).Value '实发数量

'超过两行以上的值,需要用

m_BillTransfer.BillForm.insertrow

rs.MoveNext

Next

备注:

m_BillTransfer.BillForm.vsEntrys.InsertRows 2, 1 "在第2行后插入1行 m_BillTransfer.BillForm.CopyRow 2, 3 "把第2行数据复制到第3行

m_BillTransfer.BillForm.DelRow 3"删除第3行


今天的努力,明天的享受!
今天的无为,明天的无助!
今天的迷茫,明天的受累!
等级:管理员 参考IP地址:*.*.*.*
2018-12-25 21:18:34
尊贵身份标志
cyy275(管理员)
cyy275
头衔:社区公民
帮派:无帮无派
帖数:497
金钱:100000
积分:2248
注册时间:2017-5-8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

While Not rs.EOF
'填充对应的行
With m_BillTransfer
'如果超过两行以上的值,需要先用
.BillForm.InsertRow
'插入一行
.SetGridText LRow, dicFieldEntry("FItemID"), rs("FNumber")
.SetGridText LRow, dicFieldEntry("FAuxQtyMust"), Val(rs("FQty") & "")
.SetGridText LRow, dicFieldEntry("Fauxqty"), Val(rs("FQty") & "")
End With
LRow = LRow + 1
rs.moveNext
Wend

说明:
m_BillTransfer.BillForm.vsentrys.InsertRows 2, 1 "在第2行后插入1行
m_BillTransfer.BillForm.copyrow 2, 3 "把第2行数据复制到第3行
m_BillTransfer.BillForm.delRow 3"删除第3行

几个相关函数说明:
1. m_BillInterFace.BillForm.addrow 2, 3 : 从第2行开始, 增加3行;
2. m_BillInterFace.SetGridText(Row, Col , Value): 给第Row行, 第Col列赋值Value;
3. m_BillInterface.BillFrom.maxentry : 返回当前单据体行数; KIS

4、m_BillTransfer.BillForm.get_MaxEntry 'K3获取当前单据表体行数

另外,给查找类型字段赋值,请参考如下示例代码:
Dim EntryCtl As Variant
EntryCtl = m_BillTransfer.EntryCtl
EntryCtl(列序号).DInterID(行序号) = 内码
EntryCtl(列序号).DNumber(行序号) = 代码
EntryCtl(列序号).DName(行序号) = 名称
m_BillTransfer.EntryCtl = EntryCtl
m_BillTransfer.SetGridText 行序号, 列序号, 名称

取工业单据体录入分录数  

ubound(oEntryCtl(Itemrow).DInterID): 其中oEntryCtl为单据体对象.Itemrow为物料代码所在列



「该帖子被 cyy275 在 2018/12/28 22:52:04 编辑过」

今天的努力,明天的享受!
今天的无为,明天的无助!
今天的迷茫,明天的受累!
等级:管理员 参考IP地址:*.*.*.*
2018-12-25 21:25:35
尊贵身份标志
cyy275(管理员)
cyy275
头衔:社区公民
帮派:无帮无派
帖数:497
金钱:100000
积分:2248
注册时间:2017-5-8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
m_BillTransfer.BillForm.insertrow '最后一行后插入空白行

今天的努力,明天的享受!
今天的无为,明天的无助!
今天的迷茫,明天的受累!
等级:管理员 参考IP地址:*.*.*.*
2018-12-25 21:54:57
Powered by 金蝶论坛 Copyright © 2011 www.xxhcom.cn. All rights reserved.