C# : 拆分替换文本
C# : 拆分替换文本
c# 把这段文字 FStockName,FMtrlNo,FMtrlName,FUnitStockName 转化成 a.FStockName,a.FMtrlNo,a.FMtrlName,a.FUnitStockName 和 ( b.FStockName = a.FStockName ) and ( b.FMtrlNo = a.FMtrlNo ) and ( b.FMtrlName = a.FMtrlName ) and ( b.FUnitStockName = a.FUnitStockName ) string input = "FStockName,FMtrlNo,FMtrlName,FUnitStockName"; // 第一部分:添加 a. 前缀 string part1 = string.Join(",", input.Split(',').Select(field => $"a.{field}")); // 第二部分:生成条件表达式 string part2 = string.Join(" and ", input.Split(',').Select(field => $"( b.{field} = a.{field} )")); // 输出结果 Console.WriteLine("第一部分结果:"); Console.WriteLine(part1); Console.WriteLine("\n第二部分结果:"); Console.WriteLine(part2); 第一部分结果: a.FStockName,a.FMtrlNo,a.FMtrlName,a.FUnitStockName 第二部分结果: ( b.FStockName = a.FStockName ) and ( b.FMtrlNo = a.FMtrlNo ) and ( b.FMtrlName = a.FMtrlName ) and ( b.FUnitStockName = a.FUnitStockName ) public static class FieldNameConverter { public static string ConvertToAliasedFields(string input, string alias) { return string.Join(",", input.Split(',').Select(field => $"{alias}.{field}")); } public static string ConvertToJoinConditions(string input, string alias1, string alias2) { return string.Join(" and ", input.Split(',').Select(field => $"( {alias2}.{field} = {alias1}.{field} )")); } } // 使用示例 var fields = "FStockName,FMtrlNo,FMtrlName,FUnitStockName"; var part1 = FieldNameConverter.ConvertToAliasedFields(fields, "a"); var part2 = FieldNameConverter.ConvertToJoinConditions(fields, "a", "b");
郭少锋
创建 2025-07-11 21:18:11
C#
SQL : 数字前面加 0
SQL : 数字前面加 0
DECLARE @num INT = 123; DECLARE @length INT = 6; SELECT REPLACE(STR(@num, @length), ' ', '0'); -- 结果: '000123'
郭少锋
创建 2025-07-11 00:23:49
SQL
云星空 : 简单账表 基础资料字段 显示值替换
云星空 : 简单账表 基础资料字段 显示值替换
#region| 设置:报表属性 Initialize() | public override void Initialize() { base.Initialize(); base.ReportProperty.IdentityFieldName = "FIdentityId"; // 字段筛选需要用到,名称不可修改 base.ReportProperty.BillTypeFieldName = "FBillTypeId"; base.ReportProperty.FormIdFieldName = "FFormId"; base.ReportProperty.BillKeyFieldName = "FID"; base.ReportProperty.PrimaryKeyFieldName = "FBillNo"; base.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; base.ReportProperty.IsUIDesignerColumns = true; base.ReportProperty.IsGroupSummary = true; base.IsCreateTempTableByPlugin = true; base.ReportProperty.SimpleAllCols = true; base.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; //base.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FStockId", "FStockNo"); //base.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FMaterialId", "FMaterialNo"); base.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns = new Dictionary<string, string>() // 显示时,把基础资料 FStockId 的值显示成 数据表 FStockNo 的值 { { "FStockId", "FStockNo"}, { "FMaterialId", "FMaterialNo"}, }; } #endregion #region| 创建临时表 aCreateTempTable() | private void aCreateTempTable(Context aContext) { aSql = string.Format(@"/*dialect*/ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 创建:临时表 {0} create table dbo.{0}( FListId bigint identity(1,1) primary key -- 自动递增 ,FIdentityId int null default(0) -- 序号:字段筛选需要用到 ,FLevel int null default(0) -- 步骤: ,FFormId varchar(36) null default('') -- 单据名称 ,FFormSeq int null default(0) -- 单据顺序 ,FID int null default(0) -- 单据内码 ,FEntryId int null default(0) -- 分录内码 ,FBillTypeId varchar(36) null default('') -- 单据类型 ,FDate datetime null -- 单据日期 ,FBillNo nvarchar(30) null default('') -- 单据编号 ,FSeq int null default(0) -- 行号 ,FStockId bigint null default(0) -- 仓库名称 ,FMaterialId bigint null default(0) -- 物料编码 ,FColor bigint null default(0) -- 颜色 ,FStockNo nvarchar(50) null default('') -- 仓库编码 ,FMtrlNo nvarchar(50) null default('') -- 仓库编码 ); --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ", aTableName); DBUtils.Execute(aContext, aSql); } #endregion
郭少锋
创建 2025-07-10 16:16:28
云星空
云星空 : 联查:关联信息
云星空 : 联查:关联信息
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 联查:关联信息 select it11.FMasterId ,it11.FInstanceId,it11.FFLowId,it11.FFirstFormId,it11.FFirstBillNo,it11.FFirstBillId,it11.FStartTime,it11.FStatus,it11.FSourceId ,'|' A ,it12.FInstanceId,it12.FRouteId,it12.FsTableName,it12.FsId,it12.FtTableName,it12.FtId,it12.FCreateTime,it12.FLineId,it12.FFirstNode,it12.FIsBreak ,it11.FFirstBillNo FBillNo_PpBom ,isnull(pb12.FSeq,'') FSeq_PpBom ,isnull(pm11.FBillNo ,'') FBillNo_PickMtrl ,isnull(pm12.FSeq ,'') FSeq_PickMtrl from t_BF_Instance it11 left join t_BF_InstanceEntry it12 on it11.FInstanceId = it12.FInstanceId left join t_Prd_PpBomEntry pb12 on (case when it12.FtTableName = 't_Prd_PpBomEntry' then it12.FtId else 0 end) = pb12.FEntryId left join t_Prd_PickMtrlData pm12 on (case when it12.FtTableName = 't_Prd_PickMtrlData' then it12.FtId else 0 end) = pm12.FEntryId left join t_Prd_PickMtrl pm11 on pm11.FID = pm12.FID where it11.FFirstBillNo = 'PPBOM64260' and it11.FInstanceId = '1' order by it11.FMasterId ,it11.FInstanceId ,it12.FRouteId /* -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dbcc checkIdent('Z_Prd_PickMtrlData_LK', noReSeed) ; -- 种子表 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- t_BF_InstanceEntry FFirstNode = 1 是否存在【关联关系】 FLineId = 5 具体的【关联关系】 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- delete from t_BF_Instance where FInstanceId = '1' delete from t_BF_InstanceEntry where FInstanceId = '1' insert into t_BF_Instance ( FMasterId ,FInstanceId ,FFirstFormId ,FFirstBillNo ,FFirstBillId ) -- 源单:表头信息 select '1' ,'1' ,'PRD_PPBOM' ,'PPBOM64260' ,'205129' insert into t_BF_InstanceEntry ( FInstanceId ,FRouteId ,FsTableName ,FsId ,FtTableName ,FtId ,FLineId ,FFirstNode ) -- 源单:表体信息 + 对应关系 select '1' ,'2' ,' ' ,'0' ,'T_PRD_PPBOMENTRY' ,'1849488' ,'0' ,'1' union all select '1' ,'3' ,'T_PRD_PPBOMENTRY' ,'1849488' ,'T_PRD_PICKMTRLDATA' ,'995718' ,'5' ,'0' union all select '1' ,'4' ,'T_PRD_PPBOMENTRY' ,'1849488' ,'T_PRD_PICKMTRLDATA' ,'998663' ,'5' ,'0' -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from t_BF_Instance where FInstanceId = '6859002b528307' select * from t_BF_InstanceEntry where FtId = 1849488 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
郭少锋
创建 2025-07-10 15:41:39
云星空
云星空 : 开发商注册码
云星空 : 开发商注册码
select * from t_bos_isv -- 开发商注册码 在配置数据库 K3DBConfiger_231008 update t_bos_isv set FDEVCODE ='aGsf' WHERE FISVID = 'IBHC-LMFG-QIMZ-RMVF-BKTP'
郭少锋
创建 2025-06-28 18:12:47
云星空
K3 功能 : K3 WISE 15.1 Win10客户端 输入法问题
K3 功能 : K3 WISE 15.1 Win10客户端 输入法问题
登录的时候不管什么输入法都打入不了拼出来的汉字,比如拼出来三个字,敲回车且进去一个字而且不是拼写的字 逐个试一下 1. 运行 services.msc ,把【Windows Font Cache Service】设为手动,重启电脑 2. 桌面右下角点击【输入法切换器】,点击【语言首选项】,在弹出的窗口下滑找到【中文(简体,中国)】,点击【选项】,找到【美式键盘】-【删除】,不用重启,试着录入看是否正常。 3. 点击:开始---运行以下DLL文件。(一个一个依次注册) regsvr32 Actxprxy.dll regsvr32 Shdocvw.dll 重启系统,不行再添加以下的DLL文件。 regsvr32 Mshtml.dll regsvr32 Urlmon.dll regsvr32 Msjava.dll regsvr32 Browseui.dll regsvr32 Oleaut32.dll regsvr32 Shell32.dll
郭少锋
创建 2025-06-24 10:20:52
K3 功能
Access : 生成序号:多字段 排序
Access : 生成序号:多字段 排序
Private Sub txtSeach_LostFocus() aTxt = "": If Len(txtSeach.Value) > 0 Then aSplits = Split(txtSeach.Value, ","): '拆分条件 For Each aSplit In aSplits If Len(aSplit) > 0 Then aTxt = aTxt & IIf(aTxt = "", " where ", " and ") & "( ( nz(FPriceName) +' | '+ nz(FContent) +' | '+ nz(FUnit) +' | '+ Format(nz(FPrice),'0.######') +' | '+ nz(FCreaterName) +' | '+ nz(FCreateTime) ) like '*" & aSplit & "*' )" End If Next End If FSeq = "( select count(*) from (select * from v_PriceList " & aTxt & " ) as t2 where ( nz(t2.FPriceName) +' | '+ nz(t2.FContent) +' | '+ nz(t2.FUnit) +' | '+ Format(nz(t2.FPrice),'0.######') ) <= ( nz(t1.FPriceName) +' | '+ nz(t1.FContent) +' | '+ nz(t1.FUnit) +' | '+ Format(nz(t1.FPrice),'0.######') ) ) as FSeq " '计算序号 Sub1.Form.RecordSource = " select * ," & FSeq & " from (select * from v_PriceList " & aTxt & " ) t1 order by t1.FPriceName,t1.FContent,t1.FUnit,t1.FPrice ; " '排序 Sub1.Form.Requery End Sub
郭少锋
创建 2025-06-13 11:47:17
Access
Access : 自动生成序号
Access : 自动生成序号
在 Access VBA 中,`RecordSource` 属性用于指定窗体或报表的数据源。你提供的 SQL 语句在 Access 中可能无法直接使用,因为 Access 的 SQL 语法与 SQL Server 或其他数据库的 SQL 语法有所不同。特别是 `row_number()` 函数在 Access 中并不支持。 如果你想要在 Access 中实现类似的功能,可以使用以下方法: ### 方法 1:使用子查询 你可以使用子查询来模拟 `row_number()` 的功能。以下是一个示例: ```vba Sub1.Form.RecordSource = "SELECT TOP 500 * FROM (SELECT *, (SELECT COUNT(*) FROM v_ItemList AS T2 WHERE T2.FItemId >= T1.FItemId) AS FSeq FROM v_ItemList AS T1) ORDER BY FItemId DESC;" FSeq = "( select count(*) from v_ItemList as t2 where t2.FItemNo <= t1.FItemNo " & aTxt & " ) as FSeq " '按 FItemNo 升序 计算序号 Sub1.Form.RecordSource = " select * ," & FSeq & " from v_ItemList t1 where 1=1 " & aTxt & " order by FItemNo ; " '按 FItemNo 升序 显示 ``` ### 方法 2:使用 DCount 函数 如果你需要在 Access 中生成行号,可以使用 `DCount` 函数来实现: ```vba Sub1.Form.RecordSource = "SELECT TOP 500 *, DCount('FItemId', 'v_ItemList', 'FItemId >= ' & FItemId) AS FSeq FROM v_ItemList ORDER BY FItemId DESC;" Sub1.Form.RecordSource = "select * ,DCount('FItemId', 'v_ItemList', 'FItemId >= ' & FItemId ) as FSeq from v_ItemList order by FItemId desc ; " Sub1.Form.RecordSource = "select * ,DCount('FItemNo', 'v_ItemList', 'FItemNo >= ''' & FItemNo & '''') as FSeq from v_ItemList order by FItemNo desc; " ``` ### 方法 3:使用 VBA 代码生成行号 如果你需要在 VBA 中生成行号,可以在加载数据后遍历记录集并添加行号: ```vba Dim rs As DAO.Recordset Dim i As Integer Set rs = CurrentDb.OpenRecordset("SELECT TOP 500 * FROM v_ItemList ORDER BY FItemId DESC;") i = 1 Do While Not rs.EOF rs.Edit rs!FSeq = i rs.Update i = i + 1 rs.MoveNext Loop Sub1.Form.RecordSource = "SELECT * FROM v_ItemList ORDER BY FItemId DESC;" ``` ### 方法 4:使用临时表 你还可以创建一个临时表来存储带有行号的数据: ```vba Dim sql As String ' 创建临时表 CurrentDb.Execute "CREATE TABLE TempItemList (FSeq AUTOINCREMENT, FItemId LONG, OtherFields...);" ' 插入数据并生成行号 CurrentDb.Execute "INSERT INTO TempItemList (FItemId, OtherFields...) SELECT FItemId, OtherFields... FROM v_ItemList ORDER BY FItemId DESC;" ' 设置 RecordSource Sub1.Form.RecordSource = "SELECT * FROM TempItemList;" ``` ### 总结 Access 的 SQL 语法与其他数据库有所不同,特别是在处理行号时。你可以根据具体需求选择上述方法之一来实现类似的功能。如果你需要频繁使用行号,建议使用方法 3 或方法 4,这样可以更灵活地处理数据。
郭少锋
编辑 2025-06-13 11:32:14
创建 2025-03-15 16:03:24
Access
云星空 : 升级后,新建账套 没有更新到当前版本
云星空 : 升级后,新建账套 没有更新到当前版本
云星空企业版 9.0.0.20250410 新建的账套版本 为什么会是 9.0.0.20240516,升级账套的时候提示错误: Error: [2025-06-11 20:19:32] Fail to StartPkg,Error Can't Find Package in PackCollectionC7AAA2A3-D73B-4C83-9A38-FCD4B2CFF399: C:\Program Files (x86)\Kingdee\K3Cloud\CommonFileServer\PackageCollection\C7AAA2A3-D73B-4C83-9A38-FCD4B2CFF399-Kingdee.BOS.DeployService- 在 Kingdee.BOS.DeployService.PackageRepository.GetManifest(String pkgId) 在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext() 在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 在 Kingdee.BOS.DeployService.PackageDeployer.ValidateToStartPkg(Context ctx, StartArg sarg, Boolean riaseExcetiopn) 在 Kingdee.BOS.DeployService.DeployerService.StartPkg(Context ctx, StartArg arg) 解决方案:新建管理中心 重新释放包,再修改回 原先的管理中心 (1)修改ManageSite\App_Data\Common.config,将当前正在使用的管理中心改为 false,重启 IIS; (2)打开管理中心,新建账套; (3)修改ManageSite\App_Data\Common.config,将新建的管理中心改为 false,之前使用的改为 true,重启IIS; (4)打开管理中心,新建账套,就能正常使用了;
郭少锋
编辑 2025-06-11 21:22:06
创建 2025-06-11 21:21:49
云星空
云星空 : 单据体 金额合计 求和
云星空 : 单据体 金额合计 求和
sum(map(lambda x : (x.FOutAmount), FEntity)) > 0 FOutAmount 字段标识 FEntity 单据体标识
郭少锋
创建 2025-05-23 11:46:58
云星空