1.实现销售合同中【直接客户】信息的录入后,自动带出关联【省份】的信息,根据BOS单据的基本设置不能将省份信息写成字

段进行推送,故需要在BOS单据中进行插件开发;

开发过程中有个关键表:

1)选择直接用户的表结构  为新增添的核算项目,查询表语句为:

select b.fid from t_Item_3030 a inner join t_submessage b on a.f_102=b.finterid where a.fitemid = 196918

--t_Item_3030 :核算项目存储表;--t_submessage 辅助资料基础表

2)选择购货客户的表结构,查询语句为:

select B.fid from t_Organization a inner join t_submessage b on a.F_107=b.finterid where fitemid=12316

--客户信息表为:t_Organization; --t_submessage 辅助资料基础表

2.利用K3 wise与VB6.0插件开发工具进行插件开发;开发代码如下:

'定义 BillEvent 接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillInterface As BillEvent Public Sub Show(ByVal oBillInterface As Object) 'BillEvent 接口实现
'注意: 此方法必须存在, 请勿修改
Set m_BillInterface = oBillInterface End Sub Private Sub Class_Terminate() '释放接口对象
'注意: 此方法必须存在, 请勿修改
Set m_BillInterface = Nothing End Sub Private Sub m_BillInterface_Change(ByVal Dct As KFO.IDictionary, ByVal dctFld As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long, Cancel As Boolean) 'TODO: 请在此处添加代码响应事件 On Error GoTo Handle Dim LDct As KFO.Dictionary
Dim LdctFld As KFO.Dictionary
Dim LCol As Long, LRow As Long, Fieldname As String
Dim FItemID As Long
Dim SQL(2) As String
Dim obj As Object
Set LDct = Dct
Set LdctFld = dctFld
LCol = Col
LRow = Row
FItemID = Val(LdctFld("FFld")) ''直接用户
If LDct("ctlindex") = 42 And FItemID > 0 Then
SQL(0) = "select b.fid from t_Item_3030 a inner join t_submessage b on a.f_102=b.finterid where a.fitemid = "
SQL(0) = SQL(0) & FItemID
Set obj = m_BillInterface.K3Lib.GetData(SQL(0))
If obj.bof = True Then
Exit Sub
Else
m_BillInterface.SetFieldValue "FBase3", obj!FID
Set obj = Nothing
End If ''购货单位
ElseIf LDct("ctlindex") = 46 And FItemID > 0 Then
SQL(1) = "select b.FID from t_Organization a inner join t_submessage b on a.F_107=b.finterid where fitemid= " & FItemID
Set obj = m_BillInterface.K3Lib.GetData(SQL(1))
If obj.bof = True Then
Exit Sub
Else
m_BillInterface.SetFieldValue "FBase5", obj!FID
Set obj = Nothing
End If ElseIf UCase(LDct("ffieldname")) = UCase("FProductID") And FItemID > 0 Then
''产品代码-包装类别、物料大类
SQL(2) = "select b.fname MatrType,c.fname PackType from t_icitem a inner join t_item b on a.F_128=b.fitemid inner join t_item c on a.F_142=c.fitemid where a.fitemid= "
SQL(2) = SQL(2) & FItemID
Set obj = m_BillInterface.K3Lib.GetData(SQL(2))
If obj.bof = True Then
Exit Sub
Else
m_BillInterface.SetFieldValue "PackType", obj!PackType
m_BillInterface.SetFieldValue "MatrType", obj!MatrType
Set obj = Nothing
End If
End If
Exit Sub
Handle:
MsgBox Error.Description
Set obj = Nothing End Sub

  

程序中出现个人问题,导致时间浪费,主要问题归纳总结为:

On Error GoTo Handle 使用问题 错误处理程序必须在程序结束后,挂上后程序执行未出现错误就不会报错,本次因对该方法运用不熟练导致调试过程中浪费时间较长,后续将on error goto 进行总结;

On Error GoTo

On Error GoTo 0
      表示禁止当前过程中任何已启动的错误处理程序。

On Error Resume Next
     说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。

On Error GoTo line
     启动错误处理程序,且该例程从必要的 line 参数中指定的 line 开始。line 参数可以是任何行标签或行号。如果发生一个运行时错误,则控件会跳到 line,激活错误处理程序。指定的 line 必须在一个过程中,这个过程与 On Error 语句相同; 否则会发生编译时间错误。

一般情况下,如果在对我们创建的对象或控件进行错误捕捉,需要使用On Error Resume Next ,然后在判断它的Err.Number,根据错误类型来做相应的处理。

K3 销售合同开发的更多相关文章

  1. K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FStatu ...

  2. k3 Bos开发百问百答

              K/3 BOS开发百问百答   (版本:V1.1)           K3产品市场部       目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单 ...

  3. 一、K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------FStatus ...

  4. 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》

    案例需求:在销售订单上新增一个按钮,在订单明细中新增一个字段,命名[即时库存]. 点击按钮,弹出“Hello World!”,并获取订单明细物料的即时库存,填入字段[即时库存]. 开发工具:Visua ...

  5. 六、K3 WISE 开发插件《直接SQL报表开发新手指导 - BOM成本报表》

    ======================== 目录: 1.直接SQL报表 ======================== 1.直接SQL报表 以BOM成本报表为例,在销售模块部署,需要购买[金蝶 ...

  6. 四、K3 WISE 开发插件《工业单据老单插件开发新手指导》

    开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 =============================================== 目录 一 ...

  7. 十一、K3 WISE 开发插件《VB插件开发如何代码调试 - 步骤讲解》

    =================================== 目录: 1.配置代码调试启动程序kdmain.exe 2.设置断点 3.触发调试 4.变量跟踪 ================ ...

  8. 十、K3 WISE 开发插件《SQL Profiler跟踪单据操作时产生的SQL语句》

    =================================== 目录: 1.查询帐套的数据库DBID 2.配置需要跟踪数据库的DBID 3.配置跟踪参数 4.跟踪进行 5.分析跟踪语句 === ...

  9. 八、K3 WISE 开发插件《工业单据老单插件中获取登陆用户名》

    备注:如果是BOS新单,都有获取用户名的方法.在单据有m_BillInterface.K3Lib.User.UserId,在序时薄有m_ListInterface.K3Lib.User.UserID ...

随机推荐

  1. cxdbtreelist的按记录查找节点

    lst_projet.DataController.DataSet.Locate('pm_id',vPm_ID,[]); bl:= lst_projet.DataController.DataSet. ...

  2. 【Codeforces 639B】Bear and Forgotten Tree 3

    [链接] 我是链接,点我呀:) [题意] [题解] 首先,因为高度是h 所以肯定1下面有连续的h个点依次连成一条链.->用了h+1个点了 然后,考虑d这个约束. 会发现,形成d的这个路径,它一定 ...

  3. lucene_04_解析语法查询

    解析语法查询就是调用方法查询的原始查询 例如: 查询所有的查询器的语法为:*:*,因为lucene查询是根据term来做的,既是:key:value类型.*:*表示所有域中的所有值. api调用语法解 ...

  4. fzu 2138

    //假设n个人每个人都做对了两道题,那么要想获奖人数最少的话,那么做题数目肯定最多即全做对的,中间可能会小于零那么没有获奖的 #include<stdio.h> int main() { ...

  5. Spring MVC-表单(Form)标签-复选框集合(Checkboxes)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_checkboxes.htm 说明:示例基于Spring MVC 4.1.6. 以 ...

  6. POJ 2079

    呃,不知道我用的算不算卡壳,总有点枚举的意思. 先求凸包,然后,枚举其中一点,再枚举另一点作为结尾,这个向量旋转一周后,求出最大值面积.这里面用的是旋转卡壳判断的那个式子. PS:下一篇和这题是一样题 ...

  7. C++ exit 与 return 浅析

    [摘要] 本文从代码形式.经常使用方式,相关概念,调用关系和比較分析,这5个维度浅析 exit 与 return 在C++的同样点与差别. [常见形式] exit(0):   正常执行程序并退出程序. ...

  8. 使用enca进行字符集转码

    在linux进行开发与运维的时候,我们常常遇到字符编码的问题,系统字符设置.vimrc fileencoding设置.终端设置往往搞的晕头转向,当一个文件出现乱码的时候,我们通常不能识别它是什么编码的 ...

  9. Fitnesse Page 简单使用

    more information- http://www.fitnesse.org/FitNesse.UserGuide 1.1   Edit 点击该按钮,则可以开始编辑(如果该按钮没有出现,则这个页 ...

  10. HDU3535 AreYouBusy 混合背包

    题目大意 给出几组物品的体积和价值,每组分为三种:0.组内物品至少选一个:1.组内物品最多选一个:2.组内物品任意选.给出背包容量,求所能得到的最大价值. 注意 仔细审题,把样例好好看完了再答题,否则 ...