K3 BOS : VB:查找字符
K3 BOS : VB:查找字符
Debug.Print InStr("yyyy/MM/dd", "/") '5 Debug.Print InStr("yyyy/MM/dd", "-") '0
郭少锋
创建 2024-06-19 16:01:12
K3 BOS
K3 BOS : VB:日期格式
K3 BOS : VB:日期格式
Debug.Print Now() '2024-06-19 15:35:02 Debug.Print Format(Now(), "mm/dd/yy") '06-19-24 Debug.Print Format(Now(), "yy/mm/dd") '24-06-19 Debug.Print Format(Now(), "yyyy/mm/dd") '2024-06-19 Debug.Print Format(Now(), "yy-mm-dd") '24-06-19 Debug.Print Format(Now(), "mm-dd-yy") '06-19-24 Debug.Print Format(Now(), "yyyy-mm-dd") '2024-06-19 Debug.Print Format(Now(), "yymm") '2406 Debug.Print Format(Now(), "mmyy") '0624 Debug.Print Format(Now(), "yy-mm") '24-06 Debug.Print Format(Now(), "mm-yy") '06-24 Debug.Print Format(Now(), "yyyymmdd") '20240619 Debug.Print Format$(Now(), "mm/dd/yy") ' 同上 Debug.Print Format$(Now(), "yy/mm/dd") ' Debug.Print Format$(Now(), "yyyy/mm/dd") ' Debug.Print Format$(Now(), "yy-mm-dd") ' Debug.Print Format$(Now(), "mm-dd-yy") ' Debug.Print Format$(Now(), "yyyy-mm-dd") ' Debug.Print Format$(Now(), "yymm") ' Debug.Print Format$(Now(), "mmyy") ' Debug.Print Format$(Now(), "yy-mm") ' Debug.Print Format$(Now(), "mm-yy") ' Debug.Print Format$(Now(), "yyyymmdd") '
郭少锋
创建 2024-06-19 15:38:58
K3 BOS
K3 BOS : VB:二维数组
K3 BOS : VB:二维数组
' 定义一个二维数组,这里是一个3x2的数组,即3行2列 Dim textArray(2, 1) As String ' 为二维数组的元素赋值 textArray(0, 0) = "行1, 列1" textArray(0, 1) = "行1, 列2" textArray(1, 0) = "行2, 列1" textArray(1, 1) = "行2, 列2" textArray(2, 0) = "行3, 列1" textArray(2, 1) = "行3, 列2" ' 输出二维数组的内容 For i As Integer = 0 To 2 For j As Integer = 0 To 1 Console.WriteLine(textArray(i, j)) Next Next
郭少锋
创建 2024-06-19 13:43:45
K3 BOS
K3 BOS : K3 填写数值
K3 BOS : K3 填写数值
aFQty1 = m_BillInterface.GetDataFldbyKey("FQty2", I)("FFLD") '【字段值】 FQty2 重量 FQtyStock "FFLD" = "249" / "FDSP" = "KG" / "FFND" = "KG" / "FLastUnitID" = "249" / "FMODIFY" = 1 aFUnit11 = m_BillInterface.GetDataFldbyKey("FBase9", I)("FFLD") '【内码】 FBase9 库存单位 FUnitStock aFUnit12 = m_BillInterface.GetDataFldbyKey("FBase9", I)("FFND") '【编码】 FBase9 库存单位 FUnitStock aFUnit13 = m_BillInterface.GetDataFldbyKey("FBase9", I)("FDSP") '【名称】 FBase9 库存单位 FUnitStock aFQty2 = m_BillInterface.GetDataFldbyKey("FQty", I)("FFLD") '【字段值】 FQty 销售数量 FQtySale aFUnit2 = m_BillInterface.GetDataFldbyKey("FBase5", I)("FDSP") '【字段值】 FBase5 销售单位 FUnitSale aTxt1 = "": aTxt2 = "": aTxt2 = aFQty2 & " " & aFUnit2 If aFUnit1 <> aFUnit2 Then aTxt1 = aFQty1 & " " & aFUnit1 End If m_BillInterface.SetFieldValue "FText3", aTxt1, I '【填写数值】 FText3 重量文本 FQtyStockTxt m_BillInterface.SetFieldValue "FText5", aTxt2, I '【填写数值】 FText5 数量文本 FQtySaleTxt
郭少锋
编辑 2024-06-18 15:28:02
创建 2023-04-06 21:59:20
K3 BOS
K3 BOS : VB:拆分文本
K3 BOS : VB:拆分文本
aSplits = Split(aFProjectVal, "|") For Each aSplit In aSplits If aSplit = "FDate" Then aFDate = m_BillInterface.GetDataFldbyKey("FDate")("FFLD") If aNo2 = "" Then aNo1 = aNo1 & Format(aFDate, "yyyymm") '日期格式 Else aNo3 = aNo3 & Format(aFDate, "yyyy-mm-dd") '日期格式 End If End If Next
郭少锋
创建 2024-06-18 15:25:51
K3 BOS
K3 BOS : VB:日期格式
K3 BOS : VB:日期格式
https://blog.csdn.net/qq_35844043/article/details/116745321 VB6使用正则浅谈 二、正则处理日期格式 思路:正则是一个好东西,那么用正则+Format/Format$实现看看 考虑到有些用户电脑正则相关的文件损坏,无法使用正则,所以先封装获取正则对象的方法,如下: Public Function GetRegExpObj() As Object On Error Resume Next '函数说明:获取一个正则表达式对象 '创建作者:Commas '创建时间:2022-04-28 '修改时间: Set GetRegExpObj = CreateObject("vbscript.regexp") If Err <> 0 Then Call MsgBox(Err.Description) Err.Clear Set GetRegExpObj = Nothing End If End Function 再实现日期格式化方法。如果可以获取到正则对象,那么就用正则实现,否则就用“遍历+IsDate(vDate)试错”进行简单尝试,如下: Public Function FmtDateStr(ByVal vDate As Variant, Optional sFormat As String = "YYYY-MM-DD") As String On Error Resume Next '函数说明:将日期或日期字符串格式化输出日期字符串,默认输出格式为“YYYY-MM-DD”,如“2022-04-28” '创建作者:Commas '创建时间:2022-04-28 '修改时间: '------数据格式说明------ 'vDate:需要格式化的日期或作日期字符串,如“星期四 2022.04.28 12:15:59”、“2022_04_28 12:15:59 星期四” 'sFormat:预期的日期字符串格式,默认为“YYYY-MM-DD” '------数据格式说明------ If TypeName(vDate) = "Date" Then FmtDateStr = Format$(vDate, sFormat) Else Dim re As Object Set re = GetRegExpObj() If re Is Nothing Then '用于兼容电脑正则对象受损的处理过程,简单处理,适用于“日期 星期几”或“星期几 日期”的格式 Dim aryDate() As String, aryTemp() As String, i As Long, j As Long aryDate = Split(vDate, " ") aryTemp = Split("\@.@_@:", "@") For i = 0 To UBound(aryDate) vDate = aryDate(i) For j = 0 To UBound(aryTemp) vDate = Replace(vDate, aryTemp(j), "-") Next j If IsDate(vDate) Then Exit For End If Next i If Not IsDate(vDate) Then FmtDateStr = "" Exit Function End If Else re.Global = True re.IgnoreCase = False '设置是否匹配大小写 re.Pattern = "(\d{4}\D\d{1,2}\D\d{1,2})" Dim clnM As Object Set clnM = re.Execute(vDate) vDate = clnM.Item(0).Value re.Pattern = "\D" vDate = re.Replace(vDate, "-") End If FmtDateStr = Format$(CDate(vDate), sFormat) End If End Function 接着我们来看看实现的效果吧,如下: Option Explicit Private Sub Form_Load() Debug.Print "0" Debug.Print FmtDateStr("2022\04\28 星期三") Debug.Print FmtDateStr("星期三 2022\04\28") Debug.Print "1" Debug.Print FmtDateStr("2022/04/28 星期三") Debug.Print FmtDateStr("星期三 2022/04/28") Debug.Print "2" Debug.Print FmtDateStr("2022-04-28 星期三") Debug.Print FmtDateStr("星期三 2022-04-28") Debug.Print "3" Debug.Print FmtDateStr("2022.04.28 星期三") Debug.Print FmtDateStr("星期三 2022.04.28") Debug.Print "4" Debug.Print FmtDateStr("2022_04_28 星期三") Debug.Print FmtDateStr("星期三 2022_04_28") Debug.Print "5" Debug.Print FmtDateStr("2022/4/28 星期三") Debug.Print FmtDateStr("星期三 2022/4/28") Debug.Print "6" Debug.Print FmtDateStr("2022-4-28 星期三") Debug.Print FmtDateStr("星期三 2022-4-28") Debug.Print "7" Debug.Print FmtDateStr("2022.4.28 星期三") Debug.Print FmtDateStr("星期三 2022.4.28") Debug.Print "8" Debug.Print FmtDateStr("2022_4_28 星期三") Debug.Print FmtDateStr("星期三 2022_4_28") Debug.Print "9" Debug.Print FmtDateStr("星期四 2022-04-28 12:15:59") Debug.Print FmtDateStr(Now) End Sub 运行结果: 0 2022-04-28 2022-04-28 1 2022-04-28 2022-04-28 2 2022-04-28 2022-04-28 3 2022-04-28 2022-04-28 4 2022-04-28 2022-04-28 5 2022-04-28 2022-04-28 6 2022-04-28 2022-04-28 7 2022-04-28 2022-04-28 8 2022-04-28 2022-04-28 9 2022-04-28 2022-04-28 无论是正则,还是非正则处理,都能顺利完成预期结果的工作
郭少锋
创建 2024-06-18 10:28:09
K3 BOS
K3 BOS : VB:日期格式
K3 BOS : VB:日期格式
1-2)内置格式化函数格式日期 2.0 既然花里胡哨的非字符串的日期数据可以正确的格式化,那么是不是意味着我们只要将日期字符串先转换日期数据,再格式化就可以? 日期字符串→日期→Format或Format$日期格式化 Option Explicit Private Sub Form_Load() On Error Resume Next Dim vDate As Variant Debug.Print 1 vDate = "2022/04/28" vDate = CDate(vDate) Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") '正常 Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") Debug.Print 4 vDate = Now Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") Debug.Print 2 vDate = "2022-04-28 星期四" vDate = CDate(vDate) '出错 Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") Debug.Print 3 vDate = "星期四 2022-04-28" vDate = CDate(vDate) '出错 Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") End Sub 结论:日期字符串无法正确被转换为日期,至此,这条路也是行不通的,看来得另寻他法了……
郭少锋
创建 2024-06-18 10:23:34
K3 BOS
K3 BOS : VB:日期格式
K3 BOS : VB:日期格式
一、Format与Format$ 1-1)内置格式化函数格式日期 1.0 Option Explicit Private Sub Form_Load() On Error Resume Next Dim vDate As Variant Debug.Print 1 vDate = "2022/04/28" Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") Debug.Print 2 vDate = "2022-04-28 星期四" Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") Debug.Print 3 vDate = "星期四 2022-04-28" Debug.Print vDate, "→", Format(vDate, "YYYY-MM-DD") Debug.Print vDate, "→", Format$(vDate, "YYYY-MM-DD") End Sub 运行结果: 1 2022/04/28 → 2022-04-28 2022/04/28 → 2022-04-28 2 2022-04-28 星期四 → 2022-04-28 星期四 2022-04-28 星期四 → 2022-04-28 星期四 3 星期四 2022-04-28 → 星期四 2022-04-28 星期四 2022-04-28 → 星期四 2022-04-28 4 2023-02-19 1:40:45 → 2023-02-19 2023-02-19 1:40:45 → 2023-02-19
郭少锋
创建 2024-06-18 10:20:45
K3 BOS
SQL : SQL:事务
SQL : SQL:事务
begin tran Update IC_MAxNum set FFlag = 1 where FUserID = @UserID and FTableName = @TableName and FNumber = @FNumber set @FInterID = @FNumber commit begin transaction ------------------------------------------------------------------------------------------------------------------------------------------------------------ if @FinterID = -1 set @Sql = 'Insert Into ICMaxNum(FTableName,FMaxNum) values(''' + @tableName + ''',' + str(1000 + @iStep) + ') ' else set @Sql = 'update ICMaxNum set FMaxNum = ' + str(1000 + @iStep) + ' where FTableName = ''' + @tableName + '''' ------------------------------------------------------------------------------------------------------------------------------------------------------------ while @i< = @iStep begin set @Sql = @Sql + ' insert into IC_MAxNum(FTableName,FUserID,FNumber) values(''' + @TableName + ''',' + str(ltrim(@UserID)) + ',' + str(1000 + @i) + ') ' set @i = @i + 1 end set @Sql = @Sql + ' Update IC_MAxNum set FFlag = 1 where FUserID = ' + str(ltrim(@UserID)) + ' and FTableName = ''' + @TableName + ''' and FNumber = 1001' exec (@Sql) ------------------------------------------------------------------------------------------------------------------------------------------------------------ if @@error = 0 begin commit select @FInterID = 1001 end else begin rollback select @FinterID = -1 end
郭少锋
创建 2024-06-15 16:43:59
SQL
SQL : SQL:数字 转文本
SQL : SQL:数字 转文本
declare @FNumber int declare @i int declare @Sql nvarchar(4000) set @Sql = @Sql + ' insert into IC_MAxNum( FTableName,FUserID,FNumber ) values( ''' + @TableName + ''',' + str(ltrim(@UserID)) + ',' + str(@FInterID + @i) + ') ' str(@FInterID + @i) -- 数字 转文本
郭少锋
编辑 2024-06-15 16:28:33
创建 2024-06-15 16:28:24
SQL