语法:Object.SetActiveCell (sKey As String, [lRow As Long]) 参数说明:
sKey:String类型。指定字段的Key。
lRow:Long类型。可选参数。需要锁定的单据体多分录的行号。 注意:
如果指定的字段为“锁定”的字段,该方法不起任何作用。 示例:
在单据加载后,判断单据状态,如果是“修改”模式,设置光标在单据头字段FDecimal上:
Private Sub m_BillInterface_AfterLoadBill() If m_BillInterface.BillStatus = Enu_BillStatusExt_Modify Then Call m_BillInterface.SetActiveCell("FDecimal") End If End Sub
aSql = "select a1.*,a2.FID FSenderNo from a_UserSet a1 join t_SubMessage a2 on a1.FSender = a2.FInterID where a1.FClassTypeID = " & aFClassTypeID & " and a1.FBiller = " & aFBiller
Set aRecordset = m_BillInterface.K3Lib.GetData(aSql)
If Not aRecordset.EOF Then
Set oField = m_BillInterface.BillHeads(1).BOSFields("FBase12") '【FSender 送货人 FBase12】 表头字段【基础资料】 With oField .Number = aRecordset("FSenderNo") '【修改值】【核算项目.编码】 End With
End If
End Sub郭少锋创建 2024-05-14 00:25:35K3 BOSwindows : windows server 2019 永久激活码windows : windows server 2019 永久激活码6XBNX-4JQGW-QX6QG-74P76-72V67 MFY9F-XBN2F-TYFMP-CCV49-RMYVH RC4VN-4GQBW-WYPTV-3BD66-FVXR6 N3P28-TW9C9-69PWP-YQVC3-YBKR4 NMB98-MKJBC-FTVQ9-J3XK6-QYKTQ
Windows Server 2019产品密钥 WMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 Standard N69G4-B89J2-4G8F4-WWYCC-J464C
Windows Server 2019 Essential WVDHN-86M7X-466 P 6-VHXV7-YY726 郭少锋创建 2024-05-13 13:50:07windows云星空 : BOS 表达式云星空 : BOS 表达式原文链接:https://vip.kingdee.com/article/422885285635266304?productLineId=1&lang=zh-CN
【语句1】FExpAmountSum=sum(map(lambda x:x.FExpenseAmount if FExpID<>null and FExpID.FName=='业务招待费’ else 0 , FEntity)
语句大意:先使用lambda函数对FEntity单据体做遍历操作,再使用map函数,按照FExpID<>null and FExpID.FName==‘业务招待费'作为条件,将满足条件的FExpenseAmount字段从明细行映射挑选出来(若不满足条件, FExpenseAmount字段则为0),组成一个新的集合;最后使用sum函数对集合里面的元素做相加统计,得到的数值赋值给FExpAmountSum字段。
【语句2】FExpAmountSum=sum(map(lambda(x:x.FExpenseAmount ,filter(lambda(y:y.FExpID<>null and y.FExpID.FName=='业务招待费'), FEntity))))>0
语句大意:先使用lambda函数对FEntity单据体做遍历操作,再使用filter函数,按照FExpID<>null and FExpID.FName==‘业务招待费'作为条件,将满足条件的明细行过滤出来;再使用lambda函数对这部分明细行做遍历操作;再使用map函数,将 FExpenseAmount字段从明细行映射挑选出来,组成一个新的集合;最后使用sum函数对集合里面的元素做相加统计,得到的数值赋值给FExpAmountSum字段。
拼接遍历
FCausa = '\n'.join(o for o in (set(map(lambda x:(format(x.FRemark)), FEntity))))
①FCausa :单据头事由字段的标识;②‘\n’:自动换行符;③.join:拼接;④ o for o in 固定写法;⑤ set:去重; ⑥map:映射;⑦lambda:遍历;⑧format:格式化字符串;⑨FRemark :单据体备注字段的标识;⑩ FEntity:费用报销单的明细单据体的标识
【语句1】FPOSTID in (select FPOSTID from T_BD_STAFF where FEMPINFOID = GetValue(申请人字段的标识) AND FFORBIDSTATUS = 'A')
【语句2】FPOSTID in (select t1.FPOSTID from T_BD_STAFF t1 inner join T_ORG_POST t2 on t1.FPOSTID = t2.FPOSTID where t1.FEMPINFOID = GetValue(申请人字段的标识) AND t1.FFORBIDSTATUS = ‘A’)
【语句】FID in (select t1. FEMPINFOID from (T_BD_STAFF t1 inner join T_HR_EMPINFO t2 on t1. FEMPINFOID = t2.FID) inner join T_ORG_HRPOST t3 on G.FPOSTID= t1.FPOSTID where t1. FDEPTID = GetValue(FRequestDeptID) AND t1.FFORBIDSTATUS = 'A' and t3.FLEADERPOST ='1')
FROM TMPB3766E7A0B7111EFACB10050563 ------------------------------------------------------------------------------------------------------------------------------------------ ) a1
WHERE (FIvDate>={ts'2024-02-29 00:00:00'} and FIvDate<={ts'2024-02-29 23:59:59'}) -- 等于 2024-02-29
AND (FIvDate>={ts'2024-05-06 00:00:00'} and FIvDate<{ts'2024-05-07 00:00:00'}) -- 今天 2024-05-06 AND (FIvDate>={ts'2024-05-05 00:00:00'} and FIvDate<{ts'2024-05-06 00:00:00'}) -- 昨天 2024-05-05 AND (FIvDate>={ts'2024-05-07 00:00:00'} and FIvDate<{ts'2024-05-08 00:00:00'}) -- 明天 2024-05-07 AND (FIvDate>={ts'2024-04-28 00:00:00'} and FIvDate<{ts'2024-05-05 00:00:00'}) -- 上周 2024-04-28 至 2024-05-04
AND (FIvDate>={ts'2024-05-01 00:00:00'} and FIvDate<={ts'2024-05-31 23:59:59'}) -- 月 2024-05 郭少锋创建 2024-05-06 15:40:15云星空云星空 : 云星空 WebApi 查询报表数据云星空 : 云星空 WebApi 查询报表数据// 引用SDK组件Kingdee.BOS.WebApi.Client.dll;SDK下载地址:https://openapi.open.kingdee.com/ApiSdkCenter var client = new K3CloudApi(); // 初始化登录认证,appID、appSec可在"第三方系统登录授权"中获取 client.InitClient("6529ff74328a55", "appID", "appSec", "userName", 2052, "100", "http://192.168.188.81/k3cloud/"); client.GetSysReportData("aGsf_240319","{"FieldKeys":"","SchemeId":"","StartRow":0,"Limit":2000,"IsVerifyBaseDataField":"true","FilterString":[],"Model":{"FDate1":"1900-01-01","FDate2":"1900-01-01"}}");
------------------------------------------------------------------------------------------------------------------------------------------ var aUrl = this.Context.ClientInfo.EntryPageUrl.ToString(); aUrl = aUrl.Substring(0, aUrl.IndexOf("k3cloud") + 8); var aDBid = this.Context.DBId.ToString(); var aUser = ""; var aPass = "";
#region| 取得 用户密码 aUser,aPass ★ - aSql = string.Format(@"/*dialect*/ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select FName FUser ,FWebApi from T_SEC_user where FWebApi != '' order by FName --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ", aUserId); DynamicObjectCollection aTable2 = DBServiceHelper.ExecuteDynamicObject(this.Context, aSql);
CREATE INDEX Index_1 ON T_SAL_OutStockZx (FEntryIdZx ,FEntryId) -- 索引不止一个列,在括号中列出这些列的名称,用逗号隔开 CREATE INDEX Index_1 ON T_PRD_InStockZx (FEntryIdZx ,FEntryId) -- 索引不止一个列,在括号中列出这些列的名称,用逗号隔开 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- left join (select distinct FEntryIdZx ,FEntryId from T_PRD_InStockZx where FEntryId != 0) c3 on c3.FEntryIdZx = a3.FEntryIdZx -- 生产入库 left join (select distinct FEntryIdZx ,FEntryId from T_SAL_OutStockZx where FEntryId != 0) c4 on c4.FEntryIdZx = a3.FEntryIdZx -- 销售出库 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE UNIQUE INDEX index_name ON table_name (column_name) -- 创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。 CREATE INDEX index_name ON table_name (column_name) -- 创建一个简单的索引。允许使用重复的值
CREATE INDEX Index_Pers ON Person (LastName) -- 创建一个简单的索引,名为 "Index_Pers",在 Person 表的 LastName 列 CREATE INDEX Index_Pers ON Person (LastName DESC) -- 以降序索引某个列中的值,在列名称之后添加 DESC CREATE INDEX Index_Pers ON Person (LastName, FirstName) -- 索引不止一个列,在括号中列出这些列的名称,用逗号隔开 郭少锋编辑 2024-04-18 16:55:22创建 2024-04-18 16:41:08SQLSQL : Sql:修复数据表SQL : Sql:修复数据表------------------------------------------------------------------------------------------------------------------------------------------------------------------------ delete from t_Balance where FYear = 2024 and FPeriod = 4
alter database AIS20171115092420 set multi_user with rollback immediate ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ DBCC CHECKDB ('AIS20171115092420')
表错误: 表 't_Balance' (ID 1019866700)。数据行在索引 'ix_Balance_1' (ID 2)中没有匹配的索引行。与以下数据行匹配的索引行的键可能丢失或无效: 表错误: 表 't_Balance' (ID 1019866700)。数据行在索引 'ix_Balance_1' (ID 2)中没有匹配的索引行。与以下数据行匹配的索引行的键可能丢失或无效: CHECKDB 在表 't_Balance' (对象 ID 1019866700)中发现 0 个分配错误和 12 个一致性错误。
表错误: 对象 ID 1067866871,索引 ID 1,分区 ID 351458699968512,分配单元 ID 351458699968512 (类型为 In-row data)。页 (1:70888) 缺少上一页 (1:62734) 对它的引用。可能是因为链链接有问题。 CHECKDB 在表 't_ProfitAndLoss' (对象 ID 1067866871)中发现 0 个分配错误和 1 个一致性错误。
表错误: 表 'ICInvBal' (ID 1293299717)。索引 'pk_ICInvBal' (ID 2)中的索引行与任何数据行都不匹配。可能是以下行的多余或无效的键: 表错误: 表 'ICInvBal' (ID 1293299717)。索引 'idx_ICInvBal_FMTONo' (ID 3)中的索引行与任何数据行都不匹配。可能是以下行的多余或无效的键: CHECKDB 在表 'ICInvBal' (对象 ID 1293299717)中发现 0 个分配错误和 2 个一致性错误。
消息 8952,级别 16,状态 1,第 3 行 表错误: 表 'ICInvBal' (ID 1293299717)。索引 'pk_ICInvBal' (ID 2)中的索引行与任何数据行都不匹配。可能是以下行的多余或无效的键: 该错误已修复。
消息 8956,级别 16,状态 1,第 3 行 索引行(1:66253:119)的值为(FItemID = 289 and FStockID = 294 and FStockInDate = '' and FYear = 2024 and FPeriod = 3 and FBatchNo = '' and FStockPlaceID = 0 and FKFPeriod = 0 and FKFDate = '' and FAuxPropID = 0 and FBillInterID = 0 and FMTONo = '' and FSupplyID = 0 and UNIQUIFIER = 72),指向由(FItemID = 289 and UNIQUIFIER = 72)标识的数据行。
消息 8952,级别 16,状态 1,第 3 行 表错误: 表 'ICInvBal' (ID 1293299717)。索引 'idx_ICInvBal_FMTONo' (ID 3)中的索引行与任何数据行都不匹配。可能是以下行的多余或无效的键: 该错误已修复。
消息 8956,级别 16,状态 1,第 3 行 索引行(1:49928:224)的值为(FMTONo = '' and FItemID = 289 and UNIQUIFIER = 72),指向由(FItemID = 289 and UNIQUIFIER = 72)标识的数据行。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 错误代码:3631(E2FH) Source :Microsoft OLE DB Provider for SQL Server Detail :违反了 PRIMARY KEY 约束 'pk_Balance'。不能在对象 'dbo.t_Balance' 中插入重复键。
错误代码:3631(E2FH) Source :Microsoft OLE DB Provider for SQL Server Detail :违反了 PRIMARY KEY 约束 'pk_ProfitAndLoss'。不能在对象 'dbo.t_ProfitAndLoss' 中插入重复键。
delete from t_Balance where FYear = 2024 and FPeriod = 4 delete from t_ProfitAndLoss where FYear = 2024 and FPeriod = 4
select * from t_Balance where FYear = 2024 and FPeriod = 4 select * from t_ProfitAndLoss where FYear = 2024 and FPeriod = 4 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------郭少锋编辑 2024-04-16 20:25:07创建 2024-04-16 19:29:20SQL云星空 : Sql:参数设置云星空 : Sql:参数设置SQL:BatchStarting: 是 SQL Server Profiler 中的一个事件,它指示一个新的 SQL 批处理正在开始执行。当 SQL Server 开始执行一个新的批处理时,它会生成此事件。批处理可以包含一个或多个 SQL 语句,它们将作为一个单独的单元执行。在 Profiler 或 Extended Events 中捕获这个事件可以帮助你跟踪和分析 SQL Server 中正在执行的查询或操作。 SQL:BatchCompleted: 是 SQL Server Profiler 中的一个事件。当 SQL Server 完成执行一个 SQL 批处理(Batch)时,会生成这个事件。这个事件的产生意味着整个 SQL 批处理已经执行完毕,并且可以包含一个或多个 SQL 语句。 在 SQL Server Profiler 中,可以使用这个事件来跟踪查询和批处理的执行情况。SQL:BatchCompleted 事件提供了关于查询执行时间、影响的行数、执行计划等信息,对于监视数据库的性能和查询执行情况非常有用。通过分析这个事件,你可以了解到 SQL 语句的执行效率、执行计划以及可能存在的性能瓶颈。
SET NO_BROWSETABLE ON : 是 SQL Server 中的一个选项,它用于指示数据库引擎在执行查询时不要返回任何结果集。 这个选项通常用于阻止返回结果,只执行对数据的更改或操作。
当你设置 NO_BROWSETABLE 为 ON 时,执行查询将不会返回结果集,即使查询本身会生成结果。 这在某些情况下可能是有用的,特别是当你只对修改数据感兴趣,而不是获取结果集时。 要记住的是,启用此选项后,你将无法看到由查询生成的结果,因此需谨慎使用,以免导致不必要的数据丢失或错误。
SET FMTONLY ON: 是针对 SQL Server 的一个 T-SQL 语句, 用于在执行 Transact-SQL 批处理时,只返回查询的元数据(Metadata)信息,而不返回实际的数据记录。 这个语句在某些情况下很有用,特别是在需要检查查询语句生成的结果集的结构,但并不需要实际返回数据的情况下。
当执行 SET FMTONLY ON 后,SQL Server 会模拟执行查询语句,分析其数据的结构,但不会执行实际的查询操作。 这样可以快速获取查询的元数据,例如列名、数据类型等信息,而不必等待整个查询执行完毕返回数据。 这个语句的典型使用场景是在开发和调试过程中,当你需要检查一个查询返回的列的数据类型或者结构是否符合预期时。 但需要谨慎使用,因为它仅返回空的结果集,并且有时可能会导致误解或错误的结果,特别是当查询依赖于实际的数据来进行一些操作时。
Audit Login: 在 SQL Server 中,你可以使用 SQL Server Audit 来审计登录事件。SQL Server Audit 是一种功能强大的工具,可以跟踪和记录数据库服务器上发生的各种事件,包括登录、查询、更改、删除等操作。
SET QUOTED_IDENTIFIER ON: 是 SQL Server 中的一个语句,用于设置在标识符(如表名、列名、存储过程名等)中使用双引号作为标识符定界符。在使用 QUOTED_IDENTIFIER ON 的情况下,双引号表示标识符,而单引号则用于字符串。 当 QUOTED_IDENTIFIER 设置为 ON 时,SQL Server 将遵循 ANSI SQL 标准,强制要求使用双引号将标识符括起来。
SET ARITHABORT OFF: 用于控制当运算发生错误时,是否引发错误并中止查询。通常情况下,ARITHABORT 默认是启用的(ON)。当它被设置为 OFF 时,一些情况下会改变 SQL Server 引擎的行为。 当 ARITHABORT 设置为 OFF 时,在某些情况下,即使计算出现错误(如除以零),SQL Server 也不会引发错误,而是返回 NULL 或者特定的错误代码。 当 ARITHABORT 设置为 ON 时,默认行为是在发生错误时引发错误并中止查询。这有助于保持数据的完整性,并且可以防止不可预知的行为。 一般来说,默认情况下,最好将 ARITHABORT 设置为 ON,这样可以确保查询的可靠性和一致性。只有在特殊情况下,需要处理不同的错误处理策略或者与其他数据库交互时,才会考虑手动设置 ARITHABORT
SET NUMERIC_ROUNDABORT OFF: 是 SQL Server 中的一个语句,用于控制在发生数据类型转换时是否引发错误。 当 NUMERIC_ROUNDABORT 设置为 OFF 时,如果数据类型转换导致了数据的精度损失(例如,将浮点数转换为整数时会导致小数部分丢失),SQL Server 不会引发错误,而是尝试执行转换并返回结果。这样的话,在一些情况下,即使有精度损失,也不会中止查询或抛出异常。 然而,默认情况下 NUMERIC_ROUNDABORT 是启用的(ON),这意味着当进行数值型数据转换时,如果转换导致了精度丢失,SQL Server 将引发错误并中止查询,以确保数据的完整性和一致性。 通常建议保持 NUMERIC_ROUNDABORT 设置为默认值 ON,这有助于保持数据的准确性和完整性。只有在特殊情况下,需要对精度损失的处理进行不同的设置时,才会考虑手动设置 NUMERIC_ROUNDABORT 为 OFF。
SET ANSI_WARNINGS ON: 用于控制在执行 SQL 查询时是否引发 ANSI 标准警告。 当 ANSI_WARNINGS 设置为 ON 时,SQL Server 将遵循 ANSI 标准,对于一些警告性质的情况(比如截断数据、除零等),会引发警告或者错误,以确保数据的完整性和一致性。 举例来说,在执行某些操作时,如果出现数据截断(将一个值赋给过小的列,导致数据丢失),SQL Server 会引发警告或者错误,中止相关的操作。 默认情况下,ANSI_WARNINGS 是启用的(ON),这有助于保持 SQL 查询的规范性和数据的完整性。只有在某些情况下,你确信了解并且需要忽略某些警告时,才会考虑手动将 ANSI_WARNINGS 设置为 OFF。不过,这种操作需要慎重考虑,因为可能会影响数据的准确性和完整性。
SET ANSI_PADDING ON: 用于控制对于在拼接和比较字符列时的填充方式。 当 ANSI_PADDING 设置为 ON 时,SQL Server 将遵循 ANSI 标准,在使用 CREATE TABLE 或 ALTER TABLE 语句创建或更改表时,使用 ANSI_PADDING 设置为 ON 的情况下,字符列的存储和比较会保留尾部的空格。也就是说,在插入数据时,如果字符串末尾有空格,将会被保留,而不会被截断。 默认情况下,ANSI_PADDING 是启用的(ON),这意味着 SQL Server 将按照 ANSI 标准处理字符列的填充方式。 只有在某些情况下,你确实需要关闭 ANSI 标准的字符列填充行为时,才会考虑手动将 ANSI_PADDING 设置为 OFF。不过,在大多数情况下,最好保持默认设置以确保与 ANSI 标准的兼容性和一致性。
SET CONCAT_NULL_YIELDS_NULL ON: 用于控制在连接字符串时,如果其中有 NULL 值是否返回 NULL。 当 CONCAT_NULL_YIELDS_NULL 设置为 ON 时,在字符串连接时,如果其中一个操作数是 NULL,整个连接表达式的结果将会是 NULL。 默认情况下,CONCAT_NULL_YIELDS_NULL 是启用的(ON)。这意味着如果你试图将一个字符串与 NULL 连接,结果将会是 NULL。
SET IMPLICIT_TRANSACTIONS OFF: 用于控制隐式事务的开启和关闭。 当 IMPLICIT_TRANSACTIONS 设置为 OFF 时,SQL Server 不会自动将每个语句包装在事务中。这意味着每个语句将在自己的事务上下文中执行,并且需要显式地使用 BEGIN TRANSACTION 开启事务,以及使用 COMMIT 或 ROLLBACK 明确地提交或回滚事务。 默认情况下,IMPLICIT_TRANSACTIONS 是禁用的(OFF)。这意味着不会自动开启隐式事务,每个语句都会在自己的事务上下文中执行。 开启隐式事务可能会导致一些意外的结果和行为,因此在大多数情况下,最好保持默认设置,显式地控制事务的开启和关闭,以确保更好地控制事务的边界和行为。
SET LANGUAGE: 是 SQL Server 中的一个语句,用于设置当前会话的语言环境。在 SQL Server 中,它可以影响日期格式、语言相关的错误消息、排序规则等。 SET LANGUAGE 'us_english' 用于将当前会话的语言设置为美国英语。这会影响到在该会话中所执行的一些语言相关的操作,比如日期格式的显示,一些语言相关的错误消息等。 这个语句会将当前会话的语言环境设置为指定的语言,从而影响到会话中执行的一些语言相关的操作和结果显示。
SET DATEFORMAT: 是 SQL Server 中用于设置日期格式的语句,用于指定解释日期字符串的格式。SET DATEFORMAT 'mdy' 会将当前会话的日期格式设置为月/日/年的格式。 在这种设置下,如果你输入一个日期字符串,SQL Server 将按照月/日/年的顺序解释该日期。例如,日期字符串 '01/02/2023' 将被解释为 2023 年 1 月 2 日。 这个设置只影响日期字符串的解释方式,并不影响数据的存储或内部表示。它仅决定了在输入日期时 SQL Server 应该如何解释这些日期。
SET DATEFIRST: 是 SQL Server 中用于设置每周的第一天的语句。默认情况下,SQL Server 将周的第一天设置为 Sunday(7),这与美国常见的习惯一致。 通过 SET DATEFIRST 7 可以显式地将每周的第一天设置为 Sunday(7)。这样,当你执行类似于 DATEPART(WEEKDAY, '2023-12-31') 这样的查询时,它将返回 1,因为 '2023-12-31' 是一周中的第一天,而在 DATEFIRST 设置为默认值 7(Sunday)时,它被认为是一周中的第一天。 这个设置可以影响与日期和周相关的计算,例如,确定一周的开始或者计算日期的周数等。
SET TRANSACTION ISOLATION LEVEL READ COMMITTED: 是 SQL Server 中用于设置事务隔离级别的语句。 READ COMMITTED 是 SQL Server 默认的事务隔离级别。这个级别的含义是:一个事务可以读取到其他已经提交的事务所做的更改,但不能读取到其他事务未提交的更改。它确保了每个事务都只能读取到已提交的数据,并且可以避免脏读(读取到未提交的数据)。 设置事务隔离级别可以在事务开始之前或者在事务内部进行。使用 SET TRANSACTION ISOLATION LEVEL 可以根据需要设置不同的隔离级别,比如 READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 或 SERIALIZABLE 等。 注意,更高的隔离级别通常会带来更高的数据完整性和一致性,但可能会降低并发性能。因此,在选择事务隔离级别时,需要考虑到系统的要求和性能之间的平衡。