以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 重复值判断提示及输入 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=127192) |
||||
-- 作者:蓝蚂蚁 -- 发布时间:2018/11/8 9:18:00 -- 重复值判断提示及输入 DataColChanging中代码如下,其作用是:判断本表中是否有重复的住院号,如果有(一般情况下不会超过有3个重复的),则提示已有几条记录及相关信息,同时把该输入的住院号自动变成:住院号-已有记录数+1(如181003,如果已有重复2个,则输入的住院号变成:181003-3) Select Case e.DataCol.Name Case "住院号" Dim Result As DialogResult With DataTables("高值耗材病人使用登记表") Dim drs As List(Of DataRow) drs = .Select("住院号 = \'" & e.NewValue & "\'") If drs.count>1 Then If drs.count=1 Then Result=MessageBox.Show(""& e.NewValue &"共有"& drs.count &"处重复, 姓名:"& drs(0)("患者姓名") &" ,手术日期:"& drs(0)("手术日期") &" 是否继续录入?", " 提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ElseIf drs.count=2 Then Result=MessageBox.Show(""& e.NewValue &"共有"& drs.count &"处重复, 姓名:"& drs(0)("患者姓名") &" ,手术日期:"& drs(0)("手术日期") &" 姓名:"& drs(1)("患 者姓 名") &" ,手术日期:"& drs(1)("手术日期") &" 是否继续录入?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) End If If Result = DialogResult.Yes Then e.DataRow("住院号")=" & e.NewValue & " & "-" & "drs.conut+1" Else e.Cancel = True End If End If End With End Select 现在的问题:当输入确定有重复的住院号时,没有任何提示,是不是上面的代码有问题? 【说明:住院号单元格输入内容方式是用帮助中的:自定义录入界面之三的方式输入的, 其DropDownOpened代码: Dim txt As String = e.Form.DropDownBox.Text Dim tbl As Table = Tables("中联电脑高值耗材使用情况明细弹出窗口_Table1") If txt = "" Then tbl.Filter = "已登记=false" Else txt = "\'%" & txt & "%\'" tbl.Filter = "已登记=False And (姓名 Like " & txt & " Or 住院号 Like " & txt & " Or Convert([手术日期], \'System.String\') Like " & txt & " Or 开单科室 Like " & txt &")" End If e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框 其DropDownClosed代码: If e.Form.DropTable.Name="高值耗材病人使用登记明细主窗口_Table2" Or e.Form.DropTable.Name="高值耗材病人使用登记表" Then If e.Selected Then \'如果选择了值 Dim tbl As Table = Tables("中联电脑高值耗材使用情况明细弹出窗口_Table1") If tbl.Current IsNot Nothing Then e.Form.DropDownBox.Value = tbl.Current("住院号") e.Form.DropTable.Current("患者姓名") = tbl.Current("姓名") e.Form.DropTable.Current("性别") = tbl.Current("性别") e.Form.DropTable.Current("年龄") = tbl.Current("年龄") e.Form.DropTable.Current("科室") = tbl.Current("开单科室") e.Form.DropTable.Current("床号") = tbl.Current("床号") e.Form.DropTable.Current("手术日期") = tbl.Current("手术日期") If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的 e.Form.DropTable.FinishEditing() Else \'如果是通过窗口下拉的 e.Form.DropDownBox.WriteValue() End If End If End If End If 】
[此贴子已经被作者于2018/11/8 9:21:00编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/11/8 9:24:00 -- 试试改成
Select Case e.DataCol.Name |
||||
-- 作者:蓝蚂蚁 -- 发布时间:2018/11/8 9:46:00 -- 如已有的住院181003有重复的,并且有2个,但我新增记录时,在住院号中输入181003时,没有任何提示,输入后按回车还是181003 |
||||
-- 作者:有点甜 -- 发布时间:2018/11/8 10:20:00 -- Dim e
|
||||
-- 作者:有点甜 -- 发布时间:2018/11/8 10:21:00 -- 如果还有问题,实例发上来测试。 |
||||
-- 作者:蓝蚂蚁 -- 发布时间:2018/11/8 11:42:00 -- 有提示,但提示重复的界面中点确定,单元格内容不变。(即依然是181003)
|
||||
-- 作者:有点甜 -- 发布时间:2018/11/8 12:02:00 -- 参考
Select Case e.DataCol.Name |
||||
-- 作者:蓝蚂蚁 -- 发布时间:2018/11/8 14:50:00 -- 已经解决了 ,辛苦老师。再请教一个问题,上面的一条代码: drs = .Select("住院号 = \'" & e.NewValue & "\'") 可以换成: drs = .Select("住院号 like \'" & e.NewValue & "%\'")吗?即查找181003开头的(因为:发现一个新问题:如已有181003 以后录入有181003的 ,都是181003-1) |
||||
-- 作者:有点甜 -- 发布时间:2018/11/8 14:56:00 -- 以下是引用蓝蚂蚁在2018/11/8 14:50:00的发言:
已经解决了 ,辛苦老师。再请教一个问题,上面的一条代码: drs = .Select("住院号 = \'" & e.NewValue & "\'") 可以换成:
drs = .Select("住院号 like \'" & e.NewValue & "%\'")吗?
Select Case e.DataCol.Name |
||||
-- 作者:蓝蚂蚁 -- 发布时间:2018/11/8 15:25:00 -- 不行,应该是我表达得不够清楚。 举例:
行号 住院号 ......(后面列省略) 1 181003 2 181003-1 (输入:181003,就希望他变成:181003-1,这个已经能实现) 3 181003-2 (再次输入:181003,就希望他变成:181003-2,但实际上按照上面的代码它也是变成:181003-1) |