九、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》
===============================
目录:
1、添加工具栏按钮
2、查询被添加工具栏按钮的业务单据的FMenuID和FID
3、添加工具栏按钮和业务单据的映射关系
4、工具栏按钮点击激发事件MainFunction
5、工具栏按钮点击激发事件DLL注册
6、测试结果
7、附转载源码
===============================
本例以销售订单为例,已实际测试可行!
1、添加工具栏按钮
insert into t_MenuToolBar
( FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,
FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
FVisible,FEnable,FChecked,FShortCut,FCBList,
FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,FIndex,
FToolCaption,FToolCaption_CHT,FToolCaption_EN)
values
(99999,'NewMenuTest','测试按钮1','测试按钮','测试按钮',
'','测试按钮','测试按钮','测试按钮',0,
1,1,0,0,'',
'','',0,0,0,
'测试按钮','测试按钮','测试按钮')
2、查询被添加工具栏按钮的业务单据的FMenuID和FID
--查询被添加工具栏按钮的业务单据的FmenuID和FID,分别是100,32
select FID,FmenuID,* from iclisttemplate where Fname LIKE '%销售订单%'
3、添加工具栏按钮和业务单据的映射关系
--t_BandToolMapping.FID 对应 iclisttemplate.FMenuID,
--t_BandToolMapping.FToolID 对应 t_MenuToolBar.FToolID
--t_BandToolMapping.FComName 是按钮激发组件DLL中命名空间.类名
insert into t_BandToolMapping
(FID,FBandID,FToolID,FSubBandID,FIndex,
FComName,FBeginGroup)
values
(100,48,99999,0,999,
'|BOS_BillEvent_PlugIns.Class3',0)
4、工具栏按钮点击激发事件MainFunction
MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean)
sKey : 菜单的Key值,也就是菜单名
oList : K3List控件
bCancel:是否取消后继操作标志
代码如下:
Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean) 'Set InBatch = New InBatch 显示窗体
MsgBox ""
Dim vectBill As KFO.Vector --经实际测试K3Connection.AppConnection取不到变量。请使用SQLHelper去连接数据库,代码和使用方法在第一篇插件新手指导里
Set OBJ = CreateObject("K3Connection.AppConnection") '老单据里的连接字串
'菜单响应
Select Case sKey
Case "NewMenuTest" '和你在数据库里插入的FNAME一样
'通过Set vectBill = oList.GetSelected 可以获取当前选中序时薄数据 '返回记录集方式
'Set rs = obj.Execute("select * from t_icitem") '执行存储过程方式
' obj.Execute3 ("exec KY_PlanQty") End Select
End Function
5、工具栏按钮点击激发事件DLL注册
新建批处理文件:注册.bat
文本内容:regsvr32 "BOS_BillEvent_PlugIns.dll"
双击注册.bat,进行DLL注册
6、测试结果
7、附转载源码
Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
Dim vectBill As KFO.Vector
Dim lmul As Long
Dim rs As ADODB.Recordset
Dim InBatch As Form
Dim J
Dim I
Dim Dict As KFO.Dictionary
Dim DictCheck As KFO.Dictionary
Dim fiterid As Integer
Dim fbillno As String
Dim sqlUpdate As String
Dim sqlSelect As String
Dim strList As String 'Set InBatch = New InBatch 显示窗体
Set OBJ = CreateObject("K3Connection.AppConnection") '老单据里的连接字串 Select Case sKey1
Case "PlanUpdate"
'Set vectBill = New KFO.Vector
: Set vectBill = oList.GetSelData("FInterID")
If vectBill.UBound > Then
frmUpdate.Show
If frmUpdate.dtUpdate = "白班" Then
For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40025=白班
Set DictCheck = vectBill(I)
sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40025 where finterid = " & DictCheck.GetValue("FInterID"))
OBJ.Execute3 (sqlUpdate))
Next I
SendKeys ("{F5}")
MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
End If
If frmUpdate.dtUpdate = "夜班" Then
For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40026=夜班
Set DictCheck = vectBill(I)
sqlUpdate = "Update ICMO set FHeadSelfJ0176 =40026 where finterid = " & DictCheck.GetValue("FInterID")
OBJ.Execute3 (sqlUpdate) `
Next I
SendKeys ("{F5}")
MsgBox "生产任务单班别更新成功", vbOKOnly, "金蝶提示"
End If
End If
Case "PlanUpdate2"
Set vectBill = oList.GetSelData("FInterID")
If vectBill.UBound > Then
strList = ""
For I = vectBill.LBound To vectBill.UBound '辅助资料内码 40025=白班
Set DictCheck = vectBill(I)
strList = strList & DictCheck.GetValue("FInterID") & ","
Next I
strList = Left(strList, Len(Trim(strList)) - )
sqlSelect = "select t2.FNumber,t2.FName,sum(t1.FQty) from ICMO t1 inner join t_icitem t2 on t1.FItemID=t2.FItemID where t1.FInterID in (" & strList & ") group by t2.FNumber,t2.FName"
Set rs = OBJ.Execute(sqlSelect)
End Function
--在采购订单序时簿上添加工具栏按钮
INSERT INTO t_BandToolMapping
(FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup)
VALUES
(81,47,1001,0,1001,'&mnuFileUserAdd1',1)
INSERT INTO t_MenuToolBar
(FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,
FVisible,FEnable,FChecked,FShortCut,FShortChar,FCBList,FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,
FIndex,FToolCaption,FToolCaption_CHT,FToolCaption_EN )
VALUES
(1001,'UserAdd1','自定义1','自定义1','自定义1',17,'由用户自定义的按钮','由用户自定义的按钮','由用户自定义的按钮',0,
1,1,0,0,'','','','',0,0,0,'自定义1','自定义1','自定义1')
九、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》的更多相关文章
- K3老单序时簿开发示例
K3需要对老单进行二次开发,老单的二次开发比较麻烦,这里整理一下老单序时簿上添加按钮的二次开发示例. --以下SQL脚本--获取 MENU IDselect FID,FmenuID,FName fro ...
- 八、K3 WISE 开发插件《工业单据老单插件中获取登陆用户名》
备注:如果是BOS新单,都有获取用户名的方法.在单据有m_BillInterface.K3Lib.User.UserId,在序时薄有m_ListInterface.K3Lib.User.UserID ...
- 四、K3 WISE 开发插件《工业单据老单插件开发新手指导》
开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 =============================================== 目录 一 ...
- 十二、K3 WISE 开发插件《工业单据老单与自己添加的窗体 - 互相传值传参》
===================================== 目录: 1.演示效果--[销售订单]传值给[自定义窗体] 2.演示效果--[自定义窗体]传值给[销售订单] 3.附源码 4. ...
- 二、K3 WISE 开发插件《 工业单据老单客户端插件事件、属性、方法》
===================== 目录: 1.插件事件说明如下 2.插件属性说明如下 3.插件方法说明如下 ===================== 1.插件事件说明如下: 序号 事 ...
- K3 新单到老单关联字段的添加
新单到老单字段的添加分为两种: 一种为文本字段信息的关联,新单与老单字段的信息均为文本字段: 另一种为基础资料信息的关联,新单与老单均为基础资料字段信息. K3 WISE 11.0中存储老 ...
- K3 WISE 开发插件《K3 WISE常用数据表整理》
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FStatu ...
- 一、K3 WISE 开发插件《K3 WISE常用数据表整理》
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------FStatus ...
- K3 Wise 常用表【转载】
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.--事务类型select * from ICClassType where FT ...
随机推荐
- mybatis传入List实现批量更新的坑
原文:http://www.cnblogs.com/zzlback/p/9342329.html 今天用mybatis实现批量更新,一直报错,说我的sql语句不对,然后我还到mysql下面试了,明明没 ...
- asp.net 简单记录请求的客户端和服务端 处理时间
最近项目需要简单记录一下 ajax客户端和服务端处理时间,服务端时间的思路是借用BeginRequest和EndRequest事件,为了不影响现有接口返回的数据格式,因此服务处理时间放在respons ...
- 关于Android中EditText自动获取焦点并弹出键盘的相关设置
在android开发中,关于EditText自动获取焦点弹出键盘,我们可能又是会有让键盘自动弹出的需求,有时可能又会有不想让键盘自动弹出的需求,下面是我所总结的两种方法: 需求:EditText自动获 ...
- VTK计算网格模型上的最短路径
Dijkstra algorithm to compute the graph geodesic.Takes as input a polygonal mesh and performs a sing ...
- 下载fiddler证书并设置信任
一.苹果手机 待整理 二.android手机 待整理
- IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践
说到ios的应用开发,我们不能不提到web server服务端,如果没有服务端的支持,ios应用开发就没有多大意义了,因为从事过手机开发的朋友都知道(Android也一样),大量复杂业务的处理和数据库 ...
- Socket网络编程--网络爬虫(4)
上一小节我们已经实现了获取博客园最近博客的200页里面的用户名,并保存在一个map中.一开始是想通过这个用户名然后构造一个博客地址.然后在这个地址中查找心得用户名,但是后来发现这个的效率不是很高,虽然 ...
- FFmpeg: AVFormatContext 结构体分析
AVFormatContext 结构体分析这个结构体描述了一个媒体文件或媒体流的构成和基本信息.这是FFMpeg中最为基本的一个结构,是其他所有结构的根,是一个多媒体文件或流的根本抽象.主要成员释义: ...
- docker内程序如何读取dockerfile和compose.yml中设置的环境变量
docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...
- Push to origin/master was rejected (Git提交错误)(转)
[问题描述] 在使用Git Push代码的时候,会出现 Push to origin/master was rejected 的错误提示. 在第一次提交到代码仓库的时候非常容易出现,因为初始化的仓库和 ...