以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:禁止重复  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=82797)

--  作者:刘异
--  发布时间:2016/3/24 22:58:00
--  求助:禁止重复

老师好:请教一个问题。

我在DataColChanged表事件中写了这样的代码:

Select Case e.DataCol.name
    Case "生产日期","操作员","岗位系数"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("生产日期") = False AndAlso dr.IsNull("操作员") = False AndAlso dr.IsNull("岗位系数") = False Then
            If e.DataTable.Compute("Count([_Identify])","岗位系数 = \'" & dr("岗位系数") & "\'And 操作员 = \'" & dr("操作员") & "\'And 生产日期 = #" & e.DataRow("生产日期") & "# ") > 1 Then
                e.DataRow("岗位系数") = e.OldValue \'取消输入
            End If
        End If
End Select

 

以上对已加载的数据有效,但是要对未加载的数据实现同样的功能,我按下面的方法加了SQL结果提示错误 "标准表达式中数据类型不匹配"。(岗位系数列是数值型,生产日期是日期时间型,操作员是字符型),不知道应该怎样改。

 

Select Case e.DataCol.name
    Case "生产日期","操作员","岗位系数"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("生产日期") = False AndAlso dr.IsNull("操作员") = False AndAlso dr.IsNull("岗位系数") = False Then
            If e.DataTable.SQLCompute("Count([_Identify])","岗位系数 = \'" & dr("岗位系数") & "\'And 操作员 = \'" & dr("操作员") & "\'And 生产日期 = #" & e.DataRow("生产日期") & "# ") > 1 Then
                e.DataRow("岗位系数") = e.OldValue \'取消输入
            End If
        End If
End Select



--  作者:大红袍
--  发布时间:2016/3/24 23:17:00
--  
If e.DataTable.SQLCompute("Count([_Identify])","岗位系数 = \'" & dr("岗位系数") & "\' And 操作员 = \'" & dr("操作员") & "\' And 生产日期 = \'" & e.DataRow("生产日期") & "\' ") > 1 Then

--  作者:刘异
--  发布时间:2016/3/25 10:23:00
--  

老师:按您给的代码更改后,依然显示:

NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.12.22.1
错误所在事件:
详细错误信息:
标准表达式中数据类型不匹配。


--  作者:刘异
--  发布时间:2016/3/25 10:35:00
--  
老师:岗位系数是从别一个表引用过来的数据
--  作者:大红袍
--  发布时间:2016/3/25 10:39:00
--  

1、msgbox(e.DataRow("生产日期")) 看弹出什么?

 

2、2楼代码不可能有问题。


--  作者:刘异
--  发布时间:2016/3/25 10:46:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:禁止重复求助.rar


--  作者:大红袍
--  发布时间:2016/3/25 11:12:00
--  
            If e.DataTable.SQLCompute("Count([_Identify])","岗位系数 = " & dr("岗位系数") & " And 操作员 = \'" & dr("操作员") & "\' And 生产日期 = #" & e.DataRow("生产日期") & "# ") > 1 Then
                e.DataRow(e.DataCol.name) = e.OldValue \'取消输入
            End If

--  作者:刘异
--  发布时间:2016/3/25 11:25:00
--  

老师:我要的是“岗位系数”这一列哟呵呵,我上传了一个事例,麻烦您看一下。


--  作者:大红袍
--  发布时间:2016/3/25 11:41:00
--  
Select Case e.DataCol.name
    Case "生产日期","操作员","岗位系数"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("生产日期") = False AndAlso dr.IsNull("操作员") = False AndAlso dr.IsNull("岗位系数") = False Then
            If e.DataTable.SQLCompute("Count([_Identify])","岗位系数 = " & dr("岗位系数") & " And 操作员 = \'" & dr("操作员") & "\' And 生产日期 = #" & e.DataRow("生产日期") & "# ") > 1 Then
                e.DataRow(e.DataCol.name) = e.OldValue \'取消输入
            End If
        End If
End Select

 


--  作者:刘异
--  发布时间:2016/3/25 18:10:00
--  

老师:

虽然没有弹出错误提示,

但是禁止无效,结果还是输入值了。

我发了一个事例,麻烦您再帮我看看。

多谢了!

呵呵!我弄了好久了,不知怎么办才好。