Foxtable(狐表)用户栏目专家坐堂 → 关于禁止输入重复值的新问题


  共有7005人关注过本帖树形打印复制链接

主题:关于禁止输入重复值的新问题

帅哥哟,离线,有人找我吗?
zcw728909
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
关于禁止输入重复值的新问题  发帖心情 Post By:2013/1/17 11:21:00 [只看该作者]

1.有一个产品信息表(外部数据表),其中:档案编号列不能重复,根据帮助文件在表的DataColChanging事件中写下一下代码:

If e.DataCol.Name = "档案编号" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("档案编号 = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("此编号已经存在!")
        e.Cancel = True
    End If
End If

后来发现了一个问题:这种代码不支持查找后台数据,比如某行的档案编号为:1001,如果这行数据我没有加载,我新增加的行的档案编号还能填为:1001,如何解决这种问题(我在窗口录入和表中直接录入都试了,都有这种情况)

2.同样的情况还出现在自动编号这一块,还是这个表,有个产品ID列,是根据接稿日期列的值自动编号的,代码:

If e.DataCol.Name = "接稿日期" Then
    If e.DataRow.IsNull("接稿日期") Then
        e.DataRow("产品ID") = Nothing
    Else
        Dim bh As String ="CP"& Format(e.DataRow("接稿日期"),"yyyyMMdd") '取得编号的10位前缀
        If e.DataRow("产品ID").StartsWith(bh) = False Then '如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            Dim flt As String
            flt = "接稿日期 > #" & CDate(e.DataRow("接稿日期")).Date & "#"
            flt =  flt & " and 接稿日期 < #" & CDate(e.DataRow("接稿日期")).Date.AddDays(1) & "#"
            max = e.DataTable.Compute("Max(产品ID)",flt)  '取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(10,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("产品ID") = bh & Format(idx,"000")
        End If
    End If
End If

比方说我的接稿日期是2013.01.16 10:35:30,会生成一个产品ID:20130116001,我如果继续录入,产品ID会顺序增加,可是如果我没有加载数据,新的产品ID就会从20130116001开始重新顺序增加,如何能解决从后台判断的问题

[此贴子已经被作者于2013-1-17 11:21:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/17 12:11:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
zcw728909
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/1/17 13:10:00 [只看该作者]

以下是引用lin_hailun在2013-1-17 12:11:00的发言:
 帮助文档里有的。

http://www.foxtable.com/help/topics/1994.htm

谢谢了,我先试一下,不行了还得来麻烦你


 回到顶部