Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

数字简略输入的识别语句

kingorwell  发表于:2015-04-03 00:32:37  
复制

如果我想在文本框中,输入5-8,3,9,10,如何通过语句让Access自动识别出输入的是5,6,7,8,3,9,10这几个数字?

 

Top
煮江品茶 发表于:2015-04-03 08:17:51

循环。

问题的解决方案实际取决于识别后干什么。




kingorwell 发表于:2015-04-03 16:33:34
我打算做考勤,用于在每月中设定班次日期,需要经常输入类似的长字符串,您倾向于用哪种类型的循环?能给例句我研究研究吗?

煮江品茶 发表于:2015-04-03 17:11:31

班次日期?

弄一个起始日期,一个截止日期不就完事了,干嘛要连续输入若干连续的日期?



kingorwell 发表于:2015-04-03 21:38:04
不是这么简单的,我们这里有早班,中班,夜班,所以打个比方:张三、李四,他们2-7,15-18,20-23,27,28 日是早班,王五、陈七,他们13-17,22-23,29-30中班,这就需要一个班次,找到人后按日期简略输入。

何保辛 发表于:2015-04-05 00:04:14

假设输入的是 me!text0, 你正在排班的 年,月 为 y 和 m



BeforeUpdate中 验证录入的文本




Private Sub Text0_BeforeUpdate(Cancel As Integer)

y = 2015
m = 5

Dim dy()
days = Day(DateSerial(y, m + 1, 0)) '获取当月天数
ReDim dy(days)

s = Me!Text0

If Len(s) > 0 Then
    secs = Split(s, ",")
    For i = 0 To UBound(secs)
    
        range = Split(secs(i), "-")
        
        If UBound(range) < 0 Or UBound(range) > 1 Then
            MsgBox "数据格式不合法!"
            Cancel = True
            Exit Sub
        End If
        
        If UBound(range) = 1 Then
            If Val(range(0)) > Val(range(1)) Then
                MsgBox "范围定义错误 " & secs(i)
                Cancel = True
                Exit Sub
            End If
        End If
        
        For j = 0 To UBound(range)
            d = Trim(range(j))
            If Month(DateSerial(y, m, d)) <> m Then   ' 你正在排班的 年,月 为 y 和 m
                 MsgBox "日期不合法"
                 Cancel = True
                 Exit Sub
            End If
        Next
        
        If UBound(range) = 0 Then r2 = range(0) Else r2 = range(1)
        For k = range(0) To r2
            If dy(k) = 1 Then
                MsgBox k & "日 重复定义!"
                Cancel = True
                Exit Sub
            Else
                dy(k) = 1
            End If
        Next
        Debug.Print secs(i)
    Next
End If
For m = 1 To days: Debug.Print IIf(dy(m) = 1, m, "");: Next

End Sub




总记录:5篇  页次:1/1 9 1 :