以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗口录入人员姓名时的筛选问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186769)

--  作者:tkxffb
--  发布时间:2023/5/28 10:59:00
--  [求助]窗口录入人员姓名时的筛选问题


各位老师好,做一个差旅费管理项目,需要防止录入出差人员时与以往录入的记录重复,例如李光明和同事315日至22日在甲地出差,差旅费已在系统录入并报销,本次又录入另外几个同事317日至26日在乙地出差,事实上李光明不可能在交叉的时间段内到甲乙两个地方出差。我想在录入窗口录入时就自动筛选出来,然后弹出一个提示框,可是下面的代码不行,只能筛选重复出差人员,但不能对出发时间和返回时间进行筛选,请老师指点。


For Each s As String In e.form.controls("出差人姓名").text.split(",")  

    With CurrentTable

        Dim r As Integer

        r = .FindRow("[出差人姓名]  like \'%," & s & ",%\'") 

        If r >= 0 Then \'如果找到的话

            Dim dr As Integer

            dr = .FindRow("[返回日期] >#" & Forms("差旅费录入").Controls("出发日期").value & "# and [出发日期] <#" & Forms("差旅费录入").controls("返回日期").value & "# ")

            If dr > 0 Then

                .Position = r \'定位到找到的行.

                MessageBox.Show("有出差人员与以前记录重复","提示",MessageBoxButtons.OK,MessageBoxIcon.Error)

            End If

        End If

    End With

Next



此主题相关图片如下:360截图20230522124055091.jpg
按此在新窗口浏览图片

此主题相关图片如下:360截图20230522124225684.jpg
按此在新窗口浏览图片


[此贴子已经被作者于2023/5/28 11:03:58编辑过]

--  作者:有点蓝
--  发布时间:2023/5/28 20:19:00
--  
请上传实例说明
--  作者:2900819580
--  发布时间:2023/5/28 22:17:00
--  

       r = .FindRow("[出差人姓名]  like \'%," & s & ",%\'") \'如果是第一个人,或最后一个人,他们前面或后面,没有","这个字符的,这样r是找不到的。建议转成集合再找,或直接在原字符前和后加上","

dim txt as string = "," & e.form.controls("出差人姓名").text & ","


试试:

            dr = .FindRow("[出差人姓名] like \'%," & s & ",%\' and (([出发日期] <= #" & Forms("差旅费录入").Controls("出发日期").value & " # and [返回日期] >= #" & Forms("差旅费录入").Controls("出发日期").value & "#) or  

([出发日期] <= #" & Forms("差旅费录入").Controls("返回日期").value & "# and [返回日期] >= #" & Forms("差旅费录入").Controls("返回日期").value & "#))"


[此贴子已经被作者于2023/5/28 22:17:49编辑过]