Foxtable(狐表)用户栏目专家坐堂 → [求助]如何判断产品是否存在另一个表的多值字段里


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

主题:[求助]如何判断产品是否存在另一个表的多值字段里

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


加好友 发短信
等级:幼狐 帖子:95 积分:820 威望:0 精华:0 注册:2013/1/31 10:19:00
[求助]如何判断产品是否存在另一个表的多值字段里  发帖心情 Post By:2013/3/11 16:00:00 [只看该作者]

有2个表,一个是产品表,一个是销售清单,销售清单里填写的产品名是一个多值字段,一次出售有多个产品。

现在想在产品表里加一行表达式,判断产品是否已经出售

请狐神们帮个忙写出来,麻烦麻烦~

 

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/11 16:09:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:幼狐 帖子:95 积分:820 威望:0 精华:0 注册:2013/1/31 10:19:00
  发帖心情 Post By:2013/3/11 16:29:00 [只看该作者]

大神~~

还有一个需求,就是在一条销售记录里,删除掉其中一个产品,产品列表也更新回未出售的状态可以不?


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/11 17:18:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:幼狐 帖子:95 积分:820 威望:0 精华:0 注册:2013/1/31 10:19:00
  发帖心情 Post By:2013/3/11 17:51:00 [只看该作者]

万分感谢图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:95 积分:820 威望:0 精华:0 注册:2013/1/31 10:19:00
  发帖心情 Post By:2013/3/13 15:22:00 [只看该作者]

再帮帮我

我用了外部数据表就出错了。

外部表是SQL的


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/13 15:25:00 [只看该作者]

这里都不涉及到数据源,用这个方法,找出出错的代码行:

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

 

 

然后根据错误提示分析原因。

 

最后实在搞不定,再贴出代码,告诉大家哪一行有错,错误提示是什么。


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


加好友 发短信
等级:幼狐 帖子:95 积分:820 威望:0 精华:0 注册:2013/1/31 10:19:00
[求助]测试了一下,是不关外部表的事  发帖心情 Post By:2013/3/13 16:27:00 [只看该作者]

我测试了一下

会出现报错的情况如下

1、空数据填入数据时报错

2、将一个人买的座位号全部删掉时(清空了购买座位号的列)会报错

3、座位号加入了小数点就报错

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:项目1.table

 

这是有小数点的情况下的错误信息

-------------------------------------------------------------------------------------

.NET Framework 版本:2.0.50727.3643
Foxtable 版本:2012.11.28.1
错误所在事件:表,表B,DataColChanged
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.SyntaxErrorException: 无法解释位置 12 的标记“.”。
   在 System.Data.ExpressionParser.Parse()
   在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
   在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
   在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates)
   在 Foxtable.DataTable.Select(String O0O1l1l0O0ll11l1, String OO1l, DataViewRowState OOOlO100)
   在 Foxtable.DataTable.Select(String O1001010Ol11OO10)
   在 UserCode.DataColChanged(DataColEventArgs e)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)

------------------------------------------------------------

 

这是空数据填入数据时的错误信息

------------------------------------------------------------

.NET Framework 版本:2.0.50727.3643
Foxtable 版本:2012.11.28.1
错误所在事件:表,表B,DataColChanged
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.SyntaxErrorException: 语法错误: IN 关键字后面必须是由逗号分隔的非空表达式列表,并且必须用括号括起来。
   在 System.Data.FunctionNode.Check()
   在 System.Data.FunctionNode.Bind(DataTable table, List`1 list)
   在 System.Data.BinaryNode.Bind(DataTable table, List`1 list)
   在 System.Data.BinaryNode.Bind(DataTable table, List`1 list)
   在 System.Data.DataExpression.Bind(DataTable table)
   在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
   在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
   在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates)
   在 Foxtable.DataTable.Select(String O0O1l1l0O0ll11l1, String OO1l, DataViewRowState OOOlO100)
   在 Foxtable.DataTable.Select(String O1001010Ol11OO10)
   在 UserCode.DataColChanged(DataColEventArgs e)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)

------------------------------------------------------------

 

 

 

这是删除掉数据时的错误信息

------------------------------------------------------------

.NET Framework 版本:2.0.50727.3643
Foxtable 版本:2012.11.28.1
错误所在事件:表,表B,DataColChanged
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.SyntaxErrorException: 语法错误: IN 关键字后面必须是由逗号分隔的非空表达式列表,并且必须用括号括起来。
   在 System.Data.FunctionNode.Check()
   在 System.Data.FunctionNode.Bind(DataTable table, List`1 list)
   在 System.Data.BinaryNode.Bind(DataTable table, List`1 list)
   在 System.Data.UnaryNode.Bind(DataTable table, List`1 list)
   在 System.Data.BinaryNode.Bind(DataTable table, List`1 list)
   在 System.Data.DataExpression.Bind(DataTable table)
   在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
   在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
   在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates)
   在 Foxtable.DataTable.Select(String O0O1l1l0O0ll11l1, String OO1l, DataViewRowState OOOlO100)
   在 Foxtable.DataTable.Select(String O1001010Ol11OO10)
   在 UserCode.DataColChanged(DataColEventArgs e)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)

 

------------------------------------------------------------


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


加好友 发短信
等级:幼狐 帖子:95 积分:820 威望:0 精华:0 注册:2013/1/31 10:19:00
  发帖心情 Post By:2013/3/15 12:44:00 [只看该作者]

求解决


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/15 13:12:00 [只看该作者]

这样就不出错了:

 

Select Case e.DataCol.Name
    Case "购买座位号"
        Dim ov As String
        Dim nv As String
        If e.NewValue > "" Then
            nv = "'" & e.NewValue.REplace(",","','") & "'"
        End If
        If e.oldValue > "" Then
            nv = "'" & e.oldValue.Replace(",","','") & "'"
        End If
        If ov > "" Then
            Dim drs As List(Of DataRow) = DataTables("表A").Select("座位号 In (" & ov & ")")
            If drs.Count>0 Then
                For Each dr As DataRow In drs
                    dr("是否出售") = "否"
                Next
            End If
        End If
        If nv > "" Then
            Dim drs As List(Of DataRow) = DataTables("表A").Select("座位号 In (" & nv & ")")
            If drs.Count>0 Then
                For Each dr As DataRow In drs
                    dr("是否出售") = "是"
                Next
            End If
        End If
End Select


 回到顶部