个人博客 用于记载日常收集的一些技术文章 ...
云星空 : 删除临时表 云星空 : 删除临时表 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- 删除临时表 TMPBE6A9065EA8711EEACB70050563

if exists (select * from sys.objects where object_id = object_id(N'dbo.TMPBE6A9065EA8711EEACB70050563') and type in (N'U'))
drop table dbo.TMPBE6A9065EA8711EEACB70050563
--------------------------------------------------------------------------------------------------------------------------------------------

IF EXISTS (SELECT 1 FROM (SELECT NAME AS TABLE_NAME, XTYPE AS TABLE_XTYPE FROM sysobjects WHERE XTYPE = 'U' OR XTYPE = 'V') AS KSQL_USERTABLES WHERE TABLE_NAME = 'TMPBE6A9065EA8711EEACB70050563')
BEGIN
TRUNCATE TABLE TMPBE6A9065EA8711EEACB70050563
DROP TABLE TMPBE6A9065EA8711EEACB70050563
END
郭少锋 创建 2024-03-25 17:17:52 云星空
SQL : Sql 创建数据库 SQL : Sql 创建数据库 -- sql2008

CREATE DATABASE demo_test

ON PRIMARY ( NAME = N'demo_test_Data', FILENAME = N'C:\Data\mdf\demo_test_Data.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
LOG ON ( NAME = N'demo_test_log' , FILENAME = N'C:\Data\mdf\demo_test_log.ldf' , SIZE = 8192KB , FILEGROWTH = 65536KB )

-- sql2019

CREATE DATABASE demo_test CONTAINMENT = NONE

ON PRIMARY ( NAME = N'demo_test_Data', FILENAME = N'C:\Data\mdf\demo_test_Data.mdf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
LOG ON ( NAME = N'demo_test_log' , FILENAME = N'C:\Data\mdf\demo_test_log.ldf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
郭少锋 编辑 2024-03-23 11:30:36 创建 2023-10-14 11:12:37 SQL
K3 BOS : 还原数据库 K3-151 K3 BOS : 还原数据库 K3-151 /*
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
还原数据库 K3-151 账套文件

ALTER DATABASE K3151_2023 SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;

RESTORE DATABASE K3151_2023 FROM DISK = N'C:\Data\bak 2023\K3151_2023.bak' WITH FILE = 1 ,NOUNLOAD ,REPLACE ,STATS = 5

,MOVE 'SCM102SP2_Data' TO 'C:\Data\mdf\K3151_2023_Data.mdf'
,MOVE 'SCM102SP2_log' TO 'C:\Data\mdf\K3151_2023_Log.ldf'
;

ALTER DATABASE K3151_2023 SET MULTI_USER ;

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/
use master

declare @dbName varchar(100) select @dbName = 'K3151_2023' -- 要还原的 数据库名称

declare @path varchar(100) select @path = 'C:\Data\bak 2023' -- 备份文件位置
declare @path2 varchar(100) select @path2 = 'C:\Data\mdf' -- 数据文件位置

declare @filePath varchar(100) select @filePath = @path +'\'+ @dbName +'.bak' -- 备份文件名 C:\Data\bak\master.bak

declare @sql varchar(2000)

select @sql = '

ALTER DATABASE '+ @dbName +' SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;

RESTORE DATABASE '+ @dbName +' FROM DISK = N'''+ @filePath +''' WITH FILE = 1 ,NOUNLOAD ,REPLACE ,STATS = 5

,MOVE ''SCM102SP2_Data'' TO '''+ @path2 +'\'+ @dbName +'_Data.mdf''
,MOVE ''SCM102SP2_log'' TO '''+ @path2 +'\'+ @dbName +'_Log.ldf''
;

ALTER DATABASE '+ @dbName +' SET MULTI_USER ;
';

print @sql ;
exec( @sql );
郭少锋 创建 2024-03-23 11:26:54 K3 BOS
云星空 : Sql 还原数据库 K3 Cloud 8.1 账套文件 云星空 : Sql 还原数据库 K3 Cloud 8.1 账套文件 /*
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
还原数据库 K3 Cloud 8.1 账套文件

ALTER DATABASE demo_test SET SINGLE_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE demo_test FROM DISK = N'C:\Data\bak\demo_test.bak' WITH FILE = 1 ,NOUNLOAD ,REPLACE ,STATS = 5

,MOVE 'SqlServer_BC_20120727194252_Data' TO 'C:\Data\mdf\demo_test_Data.mdf'
,MOVE 'SqlServer_BC_20120727194252_Log' TO 'C:\Data\mdf\demo_test_Log.ldf'

ALTER DATABASE demo_test SET MULTI_USER

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/
use master

declare @dbName varchar(100) select @dbName = 'demo_test' -- 要还原的 数据库名称
declare @path varchar(100) select @path = 'C:\Data\bak' -- 备份文件位置
declare @path2 varchar(100) select @path2 = 'C:\Data\mdf' -- 数据文件位置

declare @filePath varchar(100) select @filePath = @path +'\'+ @dbName +'.bak' -- 备份文件名 C:\Data\bak\master.bak

declare @sql varchar(2000)

select @sql = '

ALTER DATABASE '+ @dbName +' SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;

RESTORE DATABASE '+ @dbName +' FROM DISK = N'''+ @filePath +''' WITH FILE = 1 ,NOUNLOAD ,REPLACE ,STATS = 5

,MOVE ''SqlServer_BC_20120727194252_Data'' TO '''+ @path2 +'\'+ @dbName +'_Data.mdf''
,MOVE ''SqlServer_BC_20120727194252_Log'' TO '''+ @path2 +'\'+ @dbName +'_Log.ldf''
;

ALTER DATABASE '+ @dbName +' SET MULTI_USER ;
';

print @sql ;
exec( @sql );
郭少锋 编辑 2024-03-23 11:26:30 创建 2023-10-14 11:02:40 云星空
云星空 : BOS 拼接文本 云星空 : BOS 拼接文本 明细行 拼接文本,去尾零

F_ORA_FLZDHZ = '产品:' + format(FMaterialId.FName) + ',数量:' + str(FQty).rstrip('0').rstrip('.') + ',单位:' + format(FUnitID) if '.' in str(FQty) else '产品:' + format(FMaterialId.FName) + ',数量:' + str(FQty) + ',单位:' + format(FUnitID)

明细行 多行文本合并到 表头字段

F_ORA_CPMXHZ = ';\n'.join((map(lambda x:x.F_ORA_FLZDHZ,filter(lambda x:x.F_ORA_FLZDHZ <> null, FSaleOrderEntry))))


多个字段文本字段拼接,中间有为空的字段可以设置自动忽略

表达式 ';'.join ( x for x in ( ( A OR '' ),( B OR '' ),('')) if x !='' )

【join】函数说明:将多个字符串以指定的分隔符拼接成一个字符串,表达式前面的';'即为分隔符,根据需要我们可以修改为其他符号


基础资料或者辅助资料无法简单的拼接,需要先转换为文本字段,再使用文件字段拼接的方式组合在一起。

表达式 str(基础资料1)+str(基础资料2)

【str】函数说明:将其他类型字段转换为字符串类型


BOS中数量字段都勾选了不显示尾零,使用常规公式:文本= str(长) +' x '+ str(宽) +' x '+ str(高);在客户端显示的时候,还是会出现尾0的情况

原因是服务端存储是有尾零的,系统是在前端呈现时移除尾零,因此需要在实体服务中变通处理,

文本 = str(长).rstrip('0').rstrip('.') +' x '+ str(宽).rstrip('0').rstrip('.') +' x '+ str(高).rstrip('0').rstrip('.')

公式说明:
rstrip('0') 移除右边的 0
rstrip('.') 移除右边的 小数点
郭少锋 编辑 2024-03-20 22:50:31 创建 2024-03-20 22:45:20 云星空
K3 BOS : 云星空 条件表达式 K3 BOS : 云星空 条件表达式 FWorkShopId1 == 102932 无效

FWorkShopId1.FNumber == "BM000016"
生产车间.编码 == "BM000016"

生产车间 = 造粒厂,保存时 必须填写:鑫瑞订单 ID、仓库、产线、班次
郭少锋 创建 2024-03-18 10:41:20 K3 BOS
K3 BOS : 云星空:应收单 显示 暂估红冲单据 K3 BOS : 云星空:应收单 显示 暂估红冲单据 选项 - 业务参数 - 勾选【显示暂估冲回单据】【显示期初单据】 郭少锋 创建 2024-03-15 11:17:22 K3 BOS K3 BOS : K3 字段值发生变化,自动调用选单界面 K3 BOS : K3 字段值发生变化,自动调用选单界面 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)

Dim aFKey As String: aFKey = dct("FKey"): aFClassTypeID = m_BillInterface.FID

'------------------------------------------------------------------------------------------------------------------------------------------------------------
If aFKey = "FSelNo" Then 'FSelNo 选单号

Select Case aFClassTypeID

Case Is = 210001202: m_BillInterface.BillCtl.DoSelBill 210001201 '新增单据 自动显示 选单界面
End Select

End If
End Sub


Private Sub m_BillInterface_BeforeSelBills(ByVal lSelBillType As Long, ByVal oDatasrv As Object, ByVal dctLink As Object, sFilter As String, dctParam As Object)

'-----------------------------------------------------------------------------------------------------
aFCustId = m_BillInterface.GetFieldValue("FBase") '【FBase 客户名称 FCustId】

If aFCustId <> "" Then
aFCustId = "AND ( a_SeOrder.FCustId = " & aFCustId & " ) "
End If

sFilter = sFilter & aFCustId '【添加 选单条件】

'-----------------------------------------------------------------------------------------------------
aFClassTypeID = m_BillInterface.FID

Select Case aFClassTypeID

Case Is = 210001202: '送货单 210001202
'-----------------------------------------------------------------------------------------------------
aFSelNo = m_BillInterface.GetFieldValue("FSelNo") 'FSelNo 选单号

If aFSelNo <> "" Then
aFSelNo = "AND ( a_SeOrder.FBillNo like '%" & aFSelNo & "%' ) " '销售订单.单据编号
End If

sFilter = sFilter & aFSelNo '【添加 选单条件】

'-----------------------------------------------------------------------------------------------------
End Select

End Sub



郭少锋 创建 2024-03-13 20:47:48 K3 BOS
K3 BOS : K3 调用选单界面 K3 BOS : K3 调用选单界面
Private Sub m_BillInterface_AfterNewBill() '新增单据 自动显示 选单界面

aFClassTypeID = m_BillInterface.FID

Select Case aFClassTypeID

Case Is = 210001602: m_BillInterface.BillCtl.DoSelBill 210001401 '出仓单 选 生产任务单
Case Is = 210001603: m_BillInterface.BillCtl.DoSelBill 210001602 '退仓单 选 出仓单

Case Is = 210001612: m_BillInterface.BillCtl.DoSelBill 210001602 '入库单 选 出仓单
Case Is = 210001613: m_BillInterface.BillCtl.DoSelBill 210001612 '退库单 选 入库单

End Select

End Sub
郭少锋 创建 2024-03-13 20:07:03 K3 BOS
K3 BOS : 第三方系统单点登录K3WISE K3 BOS : 第三方系统单点登录K3WISE 第三方系统单点登录K3WISE 供参考如下代码:

Private Sub cmdTest_Click() Dim obj As Object Dim KFO As Object Dim sK3Path As String Dim sParm As String Dim sBakSplit As String Set KFO = CreateObject("KFO..Reg") '获取K3ERP路径 sK3Path = KFO.GetKeyValue("HKEY_LOCAL_MACHINE\SOFTWARE\KINGDEE\KDPRODUCT", "Path", "") '从注册表获主控台登录取命令参数分隔符,备份起来以便恢复 sBakSplit = KFO.GetKeyValue("HKEY_CURRENT_USER\SoftWare\KingDee\K3", "LoginParm", "") '1 sLoginType String 登录方式:-LoginWin 域用户身份登录-LoginUser 命名用户身份登录 '2 sAcctNumber String 账套代码 例如帐套代码为:01.01 '3 sOrgPass String 组织机构密码,例如组织机构01的代码为:888888,无组织机构时传入空即可 '4 sUserName String 用户名,如果以域用户身份登录时传入空 '5 sUserPass String 用户密码,如果以域用户身份登录时传入空 '命令参数规则 sLoginType + " " + sAcctNumber + " " + sOrgPass + " " + sUserName + " " + sUserPass '根据客户应用场景,选择以下任意一种登录方式 '第一种登录方式:以当前WINDOWS域用户身份无界面登录 -LoginWin '比如:要登录帐套的代码为01.01 机构组织密码为888888,则命令参数应如下 sParm = "-LoginWin" & " " & "01.01" & " " & "888888" '各参数以空格符隔开 '第二种登录方式:以命名用户身份无界面登录 -LoginUser '比如:要登录帐套的代码为01.01 机构组织密码为888888 用户名为Administrator,密码为123456,则命名参数如下: sParm = "-LoginUser" & " " & "01.01" & " " & "888888" & " " & "Administrator" & " " & "123456" '各参数以空格符隔开 '将无界面登录命令参数分隔符号(空格)信息写到注册,以便Shell KDMain时读取分割命令参数 Call KFO.SetKeyValue("HKEY_CURRENT_USER\SoftWare\KingDee\K3", "LoginParm", " ") Call Shell(sK3Path & "KDMain.exe " & sParm, vbNormalFocus) '打开K3主控台 '还原注册表信息 Call KFO.SetKeyValue("HKEY_CURRENT_USER\SoftWare\KingDee\K3", "LoginParm", sBakSplit) Set KFO = NothingEnd Sub
郭少锋 创建 2024-03-13 19:57:48 K3 BOS