个人博客 用于记载日常收集的一些技术文章 ...
K3 BOS : K3 序时簿插件 ADODB.Recordset K3 BOS : K3 序时簿插件 ADODB.Recordset '【销售订单 210001201】【序时簿插件】


Private WithEvents m_ListInterface As ListEvents '定义 ListEvents 接口. 必须具有的声明, 以此来获得事件

Public Sub Show(ByVal oListInterface As Object)

Set m_ListInterface = oListInterface 'ListEvents 接口实现 '注意: 此方法必须存在, 请勿修改
End Sub

Private Sub Class_Terminate()

Set m_ListInterface = Nothing '释放接口对象 '注意: 此方法必须存在, 请勿修改
End Sub

Private Sub aAbolish(aFID As String)

Dim aSql As String, i As Long, aBillNo As String, aRecordset As ADODB.Recordset

'------------------------------------------------------------------------------------------------------------
'【未审核】【未作废】

aSql = "select FBillNo from a_SeOrder where FCheckId = 0 and FCancellation = 0 and FID in ( " & aFID & " ) order by FBillNo"

Set aRecordset = m_ListInterface.K3Lib.GetData(aSql)
If aRecordset.RecordCount > 0 Then

For i = 1 To aRecordset.RecordCount

If Not i = aRecordset.RecordCount Then
aBillNo = aBillNo & aRecordset("FBillNo") & " "
Else
aBillNo = aBillNo & aRecordset("FBillNo")
End If

aRecordset.MoveNext
Next

'------------------------------------------------------------------------------------------------------------
'【作废】未审核的单据

aSql = "update a_SeOrder set FCancellation = 1 where FCheckId = 0 and FCancellation = 0 and FID in ( " & aFID & " )"

m_ListInterface.K3Lib.UpdateData (aSql)

MsgBox "以下单据 作废成功!" & vbCrLf & vbCrLf & aBillNo, vbInformation, "一星提示"

End If

End Sub
郭少锋 创建 2023-03-27 20:49:27 K3 BOS
K3 BOS : K3 序时簿 当前选中的 所有行 K3 BOS : K3 序时簿 当前选中的 所有行 Private Sub m_ListInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean) '菜单事件

'------------------------------------------------------------------------------------------------------------
'拼接 FID

Dim aSelect As KFO.Vector, aFID As String: Set aSelect = m_ListInterface.GetSelectedBillInfo

For i = 1 To aSelect.Size
If Not i = aSelect.Size Then
aFID = aFID & aSelect(i)("FID") & ","
aFEntryId = aFEntryId & aSelect(i)("FEntryId") & ","
Else
aFID = aFID & aSelect(i)("FID")
aFEntryId = aFEntryId & aSelect(i)("FEntryId")
End If
Next

End Sub
郭少锋 创建 2023-03-27 20:46:22 K3 BOS
K3 BOS : K3 多单据体 下推 K3 BOS : K3 多单据体 下推
'【生产任务单 210001401】【客户端插件】



Private WithEvents m_BillInterface As BillEvent '定义 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_AfterSelBillBeforeFillData(ByVal dcData As KFO.IDictionary, ByVal dctLink As KFO.IDictionary)

Dim aSql As String

Dim aRecordset As ADODB.Recordset

Dim aValue As String

Dim aSelDat As KFO.Vector: Set aSelDat = dcData("SelDat")

Dim aFClassTypeID As String: aFClassTypeID = aSelDat(1)("FClassTypeID")
Dim aFEntryId As String: aFEntryId = aSelDat(1)("FEntryID")
Dim aFID As String: aFID = aSelDat(1)("FID")
Dim aFIndex As String: aFIndex = aSelDat(1)("FIndex")


If aFClassTypeID <> "210001201" Then Exit Sub '源单 不是 销售订单,退出


'aSelDat(1)("FID")为所选的“技术转化单”的单据内码

'根据单据内码去查询“技术转化单”的工序维护单据体上(对应物理表为t_BOS200000007Entry3)【工序代码】字段的值,携带到“BOS生产任务单”的技术工序维护单据体的【工序代码】字段

'【工序代码】为辅助资料,需要联查对应的辅助资料表t_SubMessage,以便查询到【工序代码】的代码,然后根据代码去给字段赋值

'其他小数或者文本类型字段则无需关联查询,可直接赋值

' aSql = "SELECT t1.FSourOperID,t2.FID,t2.FName FROM t_BOS200000007Entry3 t1" & " INNER JOIN t_SubMessage t2 ON t1.FSourOperID=t2.FInterID " & "Where t1.FID = " & aSelDat(1)("FID")


'【单据 210001201.Page1】下推【单据 210001401.Page1】
'【单据 210001201.Page2】下推【单据 210001401.Page1】
'【单据 210001201.Page3】下推【单据 210001401.Page2】 210001201.page3.FProcess → 210001401.page2.FText3


aSql = "select a2.FProcess from a_SeOrderEntry a1 ,a_SeOrderSub a2 where a1.FID = a2.FID and a1.FEGUID = a2.FPGUID and a1.FID = " & aFID & " and a1.FIndex = " & aFIndex & " order by a1.FIndex,a2.FIndex"

Set aRecordset = m_BillInterface.K3Lib.GetData(aSql)

If Not aRecordset Is Nothing Then

For i = 1 To aRecordset.RecordCount

'如果要填充【工序代码】字段的目标行在数据包中并不存在,则需要新增一行数据包

If dcData("Page2").UBound < i Then '【目标单据体】Page2

m_BillInterface.InsertNewRowAndFill 2, i '插入行 2 = Page2

End If

' aValue = aRecordset("FID") '查询到的“技术转化单”上【工序代码】字段的代码值

'将查出来的值aValue赋到“BOS生产任务单”的【工序代码】字段上去("FDestOperID"为【工序代码】字段的关键字FKey)


aValue = aRecordset("FProcess") '【字段名】 FProcess

m_BillInterface.SetFieldValue "FText3", aValue, i '【ICClassTableInfo.FKey】FText3

aRecordset.MoveNext

Next

End If


End Sub

郭少锋 创建 2023-03-27 20:16:04 K3 BOS
K3 BOS : VB ADODB.RecordSet K3 BOS : VB ADODB.RecordSet   rs = Server.CreateObject("ADODB.RecordSet")

  rs.Open(sqlStr,conn,1,A) '注:A=1表示读取数据;A=3表示新增、改动或删除数据。

  在RecordSet组件中,经常使用的属性和方法有:

  rs.Record.Count:数据记录总数。
  rs.EOF:是否最后一条记录。

  rs.Fields.Count:RecordSet对象字段数。

  rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1

  rs(i):第i个字段的数据,i为0至rs.Fields.Count-1
  rs("字段名"):指定字段的数据。


  rs.MoveFirst:指向第一条记录。
  rs.MoveLast:指向最后一条记录。
  rs.MovePrev:指向上一条记录。
  rs.MoveNext:指向下一条记录。

  rs.GetRows:将数据放入数组中。

  rs.Properties.Count:ADO的ResultSet或Connection的属性个数。
  rs.Properties(item).Name:ADO的ResultSet或Connection的名称。
  rs.Properties:ADO的ResultSet或Connection的值。

  rs.close():关闭连接。
郭少锋 创建 2023-03-27 19:23:53 K3 BOS
K3 BOS : SQL 事务处理 K3 BOS : SQL 事务处理 SELECT * FROM ICClassWorkFlow WHERE FID = 1001
SELECT * FROM ICClassWorkFlowBill WHERE FID = 1001
SELECT * FROM ICClassWorkFlowJoin WHERE FID = 1001

set implicit_transactions on

DELETE ICClassWorkFlow WHERE FID = 1001
INSERT ICClassWorkFlow ( FID, FName_CHS, FName_CHT,FName_EN, FSubSysID ) VALUES ( 1001, '销售流程图', '销售流程图', '销售流程图', 23 )


DELETE ICClassWorkFlowBill WHERE FID = 1001
INSERT ICClassWorkFlowBill (FID, FClassTypeID, FTop, FLeft, FWidth, FHeight, FTypeID ) VALUES ( 1001, -81, 1500, 1500, 2500, 2000, 0 ) ;
INSERT ICClassWorkFlowBill (FID, FClassTypeID, FTop, FLeft, FWidth, FHeight, FTypeID ) VALUES ( 1001, -21, 1500, 6000, 2500, 2000, 0 ) ;

INSERT ICClassWorkFlowBill (FID, FClassTypeID, FTop, FLeft, FWidth, FHeight, FTypeID ) VALUES ( 1001, -21, 5000, 1500, 2500, 2000, 1 ) ;
INSERT ICClassWorkFlowBill (FID, FClassTypeID, FTop, FLeft, FWidth, FHeight, FTypeID ) VALUES ( 1001, -21, 5000, 6000, 2500, 2000, -1 ) ;


DELETE ICClassWorkFlowJoin WHERE FID = 1001
INSERT ICClassWorkFlowJoin (FID, FSourClassTypeID, FDestClassTypeID, FSourTypeID, FDestTypeID ) VALUES ( 1001, -81, -21, 0, 0 ) ;
INSERT ICClassWorkFlowJoin (FID, FSourClassTypeID, FDestClassTypeID, FSourTypeID, FDestTypeID ) VALUES ( 1001, -21, -21, 1, -1 ) ;

UPDATE ICClassType SET FID = FID


IF @@TRANCOUNT > 0 COMMIT TRAN

set implicit_transactions off
郭少锋 编辑 2023-03-27 18:53:20 创建 2023-03-27 16:56:53 K3 BOS
SQL : SQL 循环语句 for SQL : SQL 循环语句 for declare @id int,@name varchar(20),@lass varchar(20)

declare cursor_1 cursor

for (select id ,name ,class from student)
open cursor_1
fetch next from cursor_1 into @id,@name,@lass

while @@FETCH_STATUS=0
begin
insert into #temp(id,name,class) values( @id,@name,@lass );
insert into #temp(id,name,class) select id,name,class from student where id = @id;

fetch next from cursor_1 into @id ,@name,@lass
end
close cursor_1

deallocate cursor_1
郭少锋 创建 2023-03-26 17:32:58 SQL
SQL : SQL 数字前 +0 SQL : SQL 数字前 +0 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--【函数】【删除】

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.aBillNo') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION dbo.aBillNo
GO


------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--【函数】dbo.aBillNo( 'No.','0',4,123 ) 【生成编号】

CREATE FUNCTION dbo.aBillNo
(
@Start varchar(20) -- 前缀
,@Replace varchar(10) -- 补齐文字

,@Len int -- 长度
,@Num int -- 数字
)
RETURNS varchar(max)
AS
BEGIN
-----------------------------------------------------------------------
declare @txt varchar(50) = cast(@num as varchar);

if len(@num) > @len begin
set @len = 0
end
else begin
set @len = @len - len(@num)
end;

return @Start + replicate( @Replace,@len ) + @txt

END

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/* 调用:

SELECT dbo.aBillNo( 'No.','x',4 ,12 ) -- No.xx12

SELECT dbo.aBillNo( 'No.','0',4 ,12 ) -- No.0012
SELECT dbo.aBillNo( 'No.','0',4 ,123456 ) -- No.123456
*/

GO
郭少锋 编辑 2023-03-25 23:09:20 创建 2023-03-25 22:32:10 SQL
K3 BOS : K3 所有客户端无法登陆 一键处理工具 K3 BOS : K3 所有客户端无法登陆 一键处理工具 【使用须知】
关闭杀毒软件,在K/3中间层服务器运行该工具


【原理】
1. 设置应用程序服务器(2003系统也无需用安装光盘,没有设置IIS)
2. 设置com+运行环境(即组件服务中我的电脑属性里的MSDTC和COM安全设置)
3. 设置DCOM动态端口并自动添加到防火墙例外中
4. 将常用的1433、135、5159、共享等添加到防火墙例外中
5. 设置本地安全策略中涉及访问计算机的部分,如“拒绝从网络访问此计算机”等
6. 启动必要的服务
7. 设置本地安全策略,默认设置为仅来宾方式,启用来宾账户
8. 为K/3中间层组件设置运行用户,默认添加当前用户


【更新记录】
2013年4月19日 重写该工具,修改界面设计
2013年5月13日 改为免费版,取消使用限制

★当因第一步导致所有客户端都连不了服务器时,请点击按钮旁的“撤销”

【结果】
·即将对本机应用程序服务器和DCOM环境进行设置:
分布式com设置成功!
启用网络com+访问设置成功!
DefaultLaunchPermission设置成功!
MachineLaunchRestriction设置成功!
MachineAccessRestriction设置成功!
DefaultAccessPermission设置成功!
添加网络DTC访问设置成功!
允许远程管理设置成功!
允许远程客户端设置成功!
允许入站设置成功!
允许出站设置成功!
不要求进行验证设置成功!
启用XA事务设置成功!
面向连接的TCP/IP协议添加成功!

·即将对本机组策略进行设置:
已禁用-帐户:使用空白密码的本地帐户只允许进行控制台登录。
已设置-网络访问:本地帐户的共享和安全模式:仅来宾。
已设置-启用来宾账户。
已设置-来宾账户密码置空。
已设置-将 Everyone 权限应用于匿名用户。

·即将对本机服务进行设置:
启动本机服务:MSDTC
启动本机服务:COM+ Event System
启动本机服务:COM+ System Application
启动本机服务:Computer Browser
启动本机服务:Server
启动本机服务:TCP/IP NetBIOS Helper
启动本机服务:Workstation

·即将对本机DCOM端口和防火墙端口进行设置:
成功设置DCOM动态端口:4000-4051
PortsInternetAvailable设置为:Y
UseInternetPorts设置为:Y
成功添加防火墙DCOM端口4000
成功添加防火墙DCOM端口4001
成功添加防火墙DCOM端口4002
成功添加防火墙DCOM端口4003
成功添加防火墙DCOM端口4004
成功添加防火墙DCOM端口4005
成功添加防火墙DCOM端口4006
成功添加防火墙DCOM端口4007
成功添加防火墙DCOM端口4008
成功添加防火墙DCOM端口4009
成功添加防火墙DCOM端口4010
成功添加防火墙DCOM端口4011
成功添加防火墙DCOM端口4012
成功添加防火墙DCOM端口4013
成功添加防火墙DCOM端口4014
成功添加防火墙DCOM端口4015
成功添加防火墙DCOM端口4016
成功添加防火墙DCOM端口4017
成功添加防火墙DCOM端口4018
成功添加防火墙DCOM端口4019
成功添加防火墙DCOM端口4020
成功添加防火墙DCOM端口4021
成功添加防火墙DCOM端口4022
成功添加防火墙DCOM端口4023
成功添加防火墙DCOM端口4024
成功添加防火墙DCOM端口4025
成功添加防火墙DCOM端口4026
成功添加防火墙DCOM端口4027
成功添加防火墙DCOM端口4028
成功添加防火墙DCOM端口4029
成功添加防火墙DCOM端口4030
成功添加防火墙DCOM端口4031
成功添加防火墙DCOM端口4032
成功添加防火墙DCOM端口4033
成功添加防火墙DCOM端口4034
成功添加防火墙DCOM端口4035
成功添加防火墙DCOM端口4036
成功添加防火墙DCOM端口4037
成功添加防火墙DCOM端口4038
成功添加防火墙DCOM端口4039
成功添加防火墙DCOM端口4040
成功添加防火墙DCOM端口4041
成功添加防火墙DCOM端口4042
成功添加防火墙DCOM端口4043
成功添加防火墙DCOM端口4044
成功添加防火墙DCOM端口4045
成功添加防火墙DCOM端口4046
成功添加防火墙DCOM端口4047
成功添加防火墙DCOM端口4048
成功添加防火墙DCOM端口4049
成功添加防火墙DCOM端口4050
成功添加防火墙DCOM端口4051
成功启用文件及打印机共享端口!
成功添加防火墙端口RPC135
成功添加防火墙端口加密服务5159
成功添加防火墙端口数据库1433
关闭防火墙

·即将进行中间层组件的运行用户设置:
ebopa组件包设置完成!
ebogroup组件包设置完成!
ebomr组件包设置完成!
ebomg组件包设置完成!
ebocn组件包设置完成!
ebocb组件包设置完成!
ebocash组件包设置完成!
eboQM组件包设置完成!
ebofa组件包设置完成!
ebodevice组件包设置完成!
eboLVC组件包设置完成!
eboAA组件包设置完成!
ebok3autoupdate组件包设置完成!
ebowebESC组件包设置完成!
eboAudit组件包设置完成!
kdsvrmgr组件包设置完成!
ebogmp组件包设置完成!
ebocom组件包设置完成!
ebodesign组件包设置完成!
ebogl组件包设置完成!
eboBos组件包设置完成!
eboom组件包设置完成!
eboeis组件包设置完成!
ebosystem组件包设置完成!
eboweb组件包设置完成!
ebocj组件包设置完成!
ebohr组件包设置完成!
eborp组件包设置完成!
eboSMS组件包设置完成!
eboarap组件包设置完成!
ebowebpub组件包设置完成!
ebopublic组件包设置完成!
ebosc组件包设置完成!
ebopm组件包设置完成!
eboFYGL组件包设置完成!
ebok3组件包设置完成!
所有的组件包设置完成!

·配置完成,请在客户端进行远程组件配置!

·如果还是使用不了K/3:
①在客户端使用【K3单台客户端连接问题处理工具】尝试!
②联系金蝶客服中心工程师进行处理!
郭少锋 创建 2023-03-23 19:25:48 K3 BOS
K3 BOS : K3 打开 账套管理:中间层配置有误,请重新配置 K3 BOS : K3 打开 账套管理:中间层配置有误,请重新配置 【方法一】
在服务器上依次单击[开始]→[设置]→[控制面板],
然后单击[管理工具]→[组件服务],弹出[组件服务]窗口中,
依次展开[计算机]→[我的电脑]→[COM+应用程序],选择所有的“ebo”开头的组件和kdsvrmgr组件,
注意需要排除“EBOHRMS”,

然后点击右键选择[属性],点击[标识],勾选“下列用户”,点击[浏览]→[高级]→[立即查找],
选择操作系统管理员用户并输入密码后单击[确定];

【方法二】
打开[开始菜单]-[所有程序]-[金蝶 K/3wise]-[金蝶K/3服务器工具]-[中间层组件注册],默认设置即可,
点击[安装]完成中间层组件注册即可;


作者:陈旭
来源:金蝶云社区
原文链接:https://vip.kingdee.com/questions/152510239986522579/answers/152510283506620813?productLineId=7&isKnowledge=2
郭少锋 编辑 2023-03-23 19:14:56 创建 2023-03-23 18:56:48 K3 BOS
K3 BOS : 瑞友天翼 K3 BOS : 瑞友天翼 瑞友天翼管理控制台 Admin 默认密码 123 郭少锋 创建 2023-03-23 14:27:56 K3 BOS