个人博客 用于记载日常收集的一些技术文章 ...
K3 BOS : C# 日期计算 K3 BOS : C# 日期计算 DateTime dt = DateTime.Now;
Label1.Text = dt.ToString();//2005-11-5 13:21:25
Label2.Text = dt.ToFileTime().ToString();//127756416859912816
Label3.Text = dt.ToFileTimeUtc().ToString();//127756704859912816
Label4.Text = dt.ToLocalTime().ToString();//2005-11-5 21:21:25
Label5.Text = dt.ToLongDateString().ToString();//2005年11月5日
Label6.Text = dt.ToLongTimeString().ToString();//13:21:25
Label7.Text = dt.ToOADate().ToString();//38661.5565508218
Label8.Text = dt.ToShortDateString().ToString();//2005-11-5
Label9.Text = dt.ToShortTimeString().ToString();//13:21
Label10.Text = dt.ToUniversalTime().ToString();//2005-11-5 5:21:25

取得:日期的某一段

Label1.Text = dt.Year.ToString();//2005
Label2.Text = dt.Date.ToString();//2005-11-5 0:00:00
Label3.Text = dt.DayOfWeek.ToString();//Saturday
Label4.Text = dt.DayOfYear.ToString();//309
Label5.Text = dt.Hour.ToString();//13
Label6.Text = dt.Millisecond.ToString();//441
Label7.Text = dt.Minute.ToString();//30
Label8.Text = dt.Month.ToString();//11
Label9.Text = dt.Second.ToString();//28
Label10.Text = dt.Ticks.ToString();//632667942284412864
Label11.Text = dt.TimeOfDay.ToString();//13:30:28.4412864

日期计算

Label1.Text = dt.ToString();//2005-11-5 13:47:04
Label2.Text = dt.AddYears(1).ToString();//2006-11-5 13:47:04
Label3.Text = dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
Label4.Text = dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
Label5.Text = dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
Label6.Text = dt.AddMonths(1).ToString();//2005-12-5 13:47:04
Label7.Text = dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05
Label8.Text = dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10
Label9.Text = dt.AddTicks(1000).ToString();//2005-11-5 13:47:04
Label10.Text = dt.CompareTo(dt).ToString();//0
Label11.Text = dt.Add(?).ToString();//问号为一个时间段


Label1.Text = dt.Equals("2005-11-6 16:11:04").ToString();//False
Label2.Text = dt.Equals(dt).ToString();//True
Label3.Text = dt.GetHashCode().ToString();//1474088234
Label4.Text = dt.GetType().ToString();//System.DateTime
Label5.Text = dt.GetTypeCode().ToString();//DateTime

Label1.Text = dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25
Label2.Text = dt.GetDateTimeFormats('t')[0].ToString();//14:06
Label3.Text = dt.GetDateTimeFormats('y')[0].ToString();//2005年11月
Label4.Text = dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日
Label5.Text = dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05
Label6.Text = dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05
Label7.Text = dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日
Label8.Text = dt.GetDateTimeFormats('M')[0].ToString();//11月5日
Label9.Text = dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5日 14:06
Label10.Text = dt.GetDateTimeFormats('g')[0].ToString();//2005-11-5 14:06
Label11.Text = dt.GetDateTimeFormats('r')[0].ToString();//Sat, 05 Nov 2005 14:06:25 GMT

Label1.Text = string.Format("{0:d}",dt);//2005-11-5
Label2.Text = string.Format("{0:D}",dt);//2005年11月5日
Label3.Text = string.Format("{0:f}",dt);//2005年11月5日 14:23
Label4.Text = string.Format("{0:F}",dt);//2005年11月5日 14:23:23
Label5.Text = string.Format("{0:g}",dt);//2005-11-5 14:23
Label6.Text = string.Format("{0:G}",dt);//2005-11-5 14:23:23
Label7.Text = string.Format("{0:M}",dt);//11月5日
Label8.Text = string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT
Label9.Text = string.Format("{0:s}",dt);//2005-11-05T14:23:23
Label10.Text string.Format("{0:t}",dt);//14:23
Label11.Text = string.Format("{0:T}",dt);//14:23:23
Label12.Text = string.Format("{0:u}",dt);//2005-11-05 14:23:23Z
Label13.Text = string.Format("{0:U}",dt);//2005年11月5日 6:23:23
Label14.Text = string.Format("{0:Y}",dt);//2005年11月
Label15.Text = string.Format("{0}",dt);//2005-11-5 14:23:23
Label16.Text = string.Format("{0:yyyyMMddHHmmssffff}",dt);
郭少锋 编辑 2024-04-02 16:51:55 创建 2023-10-30 11:45:34 K3 BOS
SQL : 计算余额 SQL : 计算余额
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- 重排序号:

update a1 set FSort = a2.FSort

from aTmp_BankList a1
join (
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select FIdentityId ,rank() over ( partition by FBankNo,FCurrencyName order by FLevel,FDate ,(case when FAmountRec > 0 then 1 when FAmountPay > 0 then 2 else 3 end) ,FBillNo,FSeq ) FSort

from aTmp_BankList where FUserId = @FUserId
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
) a2 on a1.FIdentityId = a2.FIdentityId

where FUserId = @FUserId ;


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- 计算余额:标识 FBankNo,FCurrencyName 顺序 FSort 计算 FAmountCal

with table1 as(
select FBankNo,FCurrencyName ,FSort ,sum(FAmountCal) FAmountCal
from aTmp_BankList
where FUserId = @FUserId
group by FBankNo,FCurrencyName ,FSort
)
update a1 set FAmountEnd = a2.FAmountCal

from aTmp_BankList a1
join (
-----------------------------------------------------------------------------------------------------------
select
a1.FSort,a1.FBankNo,a1.FCurrencyName ,sum(a2.FAmountCal) FAmountCal

from aTmp_BankList a1 ,table1 a2

where FUserId = @FUserId

and a1.FBankNo = a2.FBankNo
and a1.FCurrencyName = a2.FCurrencyName

and a1.FSort >= a2.FSort

group by a1.FSort,a1.FBankNo,a1.FCurrencyName
-----------------------------------------------------------------------------------------------------------
) a2 on a1.FBankNo = a2.FBankNo and a1.FCurrencyName = a2.FCurrencyName and a1.FSort = a2.FSort
;
郭少锋 创建 2024-04-01 15:24:57 SQL
SQL : 日期对比 SQL : 日期对比 declare @FDateTxt12 nvarchar(100) = ''; select @FDateTxt12 = (case when @FDateSatrt = '' then '' else 'and convert(date ,a1.FDate) >= convert(date ,'''+ @FDateSatrt +''')' end);
declare @FDateTxt22 nvarchar(100) = ''; select @FDateTxt22 = (case when @FDateSatrt = '' then '' else 'and convert(date ,a1.FDate) <= convert(date ,'''+ @FDateEnd +''')' end);


where convert(date ,a1.FDate) >= convert(date ,isnull(a2.F_DateStart ,'2001-1-1'))
郭少锋 编辑 2024-04-01 15:23:08 创建 2024-04-01 15:22:26 SQL
K3 BOS : sql 累计余额 K3 BOS : sql 累计余额 递归累计 逐行累计 余额
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- 【分组 FCustName】【递归计算依据 a1.FMaterialName = a2.FMaterialName and a1.FLot_Text = a2.FLot_Text and a1.FSort >= a2.FSort 】 FQtyPass,FQtyUnPass

with table1 as(
SELECT FMaterialName,FLot_Text ,FSort ,sum(FQtyPass) FQtyPassSum ,sum(FQtyUnPass) FQtyUnPassSum
FROM(
select rank() over ( partition by FMaterialName,FLot_Text order by FDate,FMachineName,FShiftGroupName) as FSort ,* from aTmp
) A
GROUP BY FMaterialName,FLot_Text ,FSort
)
select
a1.FSort,a1.FMaterialName,a1.FLot_Text,a1.FDate,a1.FMachineName,a1.FShiftGroupName

,a1.FQtyInput,a1.FQtyProduce,a1.FQtyPass,a1.FQtyUnPass

,sum(a2.FQtyPassSum ) FQtyPassSum
,sum(a2.FQtyUnPassSum) FQtyUnPassSum

from ( select rank() over ( partition by FMaterialName,FLot_Text order by FDate,FMachineName,FShiftGroupName) as FSort ,* from aTmp ) a1 ,table1 a2

where a1.FMaterialName = a2.FMaterialName
and a1.FLot_Text = a2.FLot_Text

and a1.FSort >= a2.FSort

group by a1.FSort,a1.FMaterialName,a1.FLot_Text,a1.FDate,a1.FMachineName,a1.FShiftGroupName
,a1.FQtyInput,a1.FQtyProduce,a1.FQtyPass,a1.FQtyUnPass

order by a1.FMaterialName,a1.FLot_Text,a1.FDate,a1.FMachineName,a1.FShiftGroupName
郭少锋 编辑 2024-04-01 14:06:53 创建 2024-03-19 16:17:12 K3 BOS
SQL : SQL 字段:不允许 重复值 SQL : SQL 字段:不允许 重复值 ALTER TABLE t_PRD_InStockZx ADD UNIQUE (FBarCode); -- 不允许 重复值 郭少锋 创建 2024-03-31 22:39:09 SQL 云星空 : 物料:启用辅助属性 云星空 : 物料:启用辅助属性 物料:启用辅助属性

( FMaterialId != null ) and ( len( filter( lambda x:x.IsEnable1==true, FMaterialId.MaterialAuxPty ) ) > 0 )

( 物料编码 != null ) and ( len( filter( lambda x:x.IsEnable1==true, 物料编码.MaterialAuxPty ) ) > 0 )
郭少锋 创建 2024-03-29 16:10:22 云星空
云星空 : 物料编码.启用批号管理 云星空 : 物料编码.启用批号管理 表达式
FMaterialId.FIsBatchManage = true
物料编码.启用批号管理 = true

解锁字段
锁定字段
合法性检查,字段必录【批次】
郭少锋 创建 2024-03-28 16:46:38 云星空
云星空 : 操作表达式 云星空 : 操作表达式 操作前确认提示:请确认是否删除选定的记录?
操作成功后提示:

只能删除【创建,暂存,重新审核】的数据 !
FDocumentStatus = 'A' OR FDocumentStatus = 'Z' OR FDocumentStatus = 'D'
FDocumentStatus in ('A','Z','D')

已经存在下游业务数据,不允许删除 !
ISPUSH()
ISPUSH() = true
ISPUSH() = 1

已作废的单据不允许保存!
FCancelStatus = 'B'
郭少锋 编辑 2024-03-28 14:57:40 创建 2024-03-28 11:32:40 云星空
云星空 : 操作限制 云星空 : 操作限制 Delete 删除
View 查看
Edit 修改

Submit 提交
CancelAssign 撤销

Audit 审核
UnAudit 反审核

Cancel 作废
UnCancel 反作废

Push 下推
Draw 选单

Print 打印

单据编号为“FPTL240327-002”的发泡投料单,审核中,不允许【删除】!
单据编号为“FPTL240327-002”的发泡投料单,已审核,不允许【删除】!
单据编号为“FPTL240328-001”的发泡投料单,已存在下游单据,不允许【删除】!

单据编号为“FPTL240328-001”的发泡投料单,审核中,无需【提交】 !
单据编号为“FPTL240327-002”的发泡投料单,已审核,无需【提交】 !
暂存单据,不能提交,请先【保存】 !

单据编号为“FPTL240328-001”的发泡投料单,未提交,无需【撤消】 !
单据编号为“FPTL240327-002”的发泡投料单,已审核,不允许【撤销】!

单据编号为“FPTL240328-001”的发泡投料单,审核失败,请先【提交】!
单据编号为“FPTL240327-003”的发泡投料单,已审核,无需【审核】!

单据编号为“FPTL240328-001”的发泡投料单,未审核,无需【反审核】 !
单据编号为“FPTL240328-001”的发泡投料单,已存在下游单据,不允许【反审核】 !


操作前确认提示:请确认 是否【删除】选定的记录 ?
操作成功后提示:

FDocumentStatus in ('Z')
暂存单据,不能提交,请先【保存】 !
已保存,不允许【暂存】!

FDocumentStatus in ('C')
已审核,不允许【删除】!
已审核,无需【提交】 !
已审核,不允许【撤销】!
已审核,无需【审核】!

FDocumentStatus in ('B')
审核中,不允许【删除】!
审核中,无需【提交】 !

FDocumentStatus in ('A','Z','D')
审核失败,请先【提交】!
未提交,无需【撤消】 !
未审核,无需【反审核】 !

ISPUSH()
已存在下游单据,不允许【删除】!
已存在下游单据,不允许【撤销】!
已存在下游单据,不允许【反审核】 !
郭少锋 编辑 2024-03-28 14:55:14 创建 2024-03-28 14:53:04 云星空
K3 BOS : VB 弹出输入对话框 K3 BOS : VB 弹出输入对话框 '弹出输入对话框,并获取用户输入的字符串

Dim aTxt As String

aTxt = InputBox("请输入 新的 对账日期:", "更改 对账日期", "")

'检查用户是否点击了取消按钮

If aTxt = "" Then
MsgBox ("用户取消了输入。")
Else
MsgBox ("用户输入了:" & aTxt)
End If
郭少锋 创建 2024-03-25 21:56:17 K3 BOS