Foxtable(狐表)用户栏目专家坐堂 → 不知道哪里错了,请指正


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

主题:不知道哪里错了,请指正

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
不知道哪里错了,请指正  发帖心情 Post By:2016/3/8 20:18:00 [只看该作者]

If e.DataCol.Name="子任务完成状态" Then 
     If e.DataRow("子任务完成状态")="已完成"  Or e.DataRow("子任务完成状态")="已关闭" Then 
     MessageBox.show(1) 
      Dim dr As DataRow 
      dr = DataTables("任务跟踪").SQLFind(" 任务ID = '" & e.DataRow("任务ID") & "' ")    
       ' dr = DataTables("任务跟踪").SQLFind("任务ID='34'")         
   
       Dim str As String = dr("任务_摘要")
     MessageBox.show(str)


想在子表的datacolchanged事件中,当  子任务完成状态   列值为  "已完成"  或"已关闭"时,将父表  的"任务_ID"=子表"任务ID" 的"子任务摘要"复制到父表中去,可是运行不到   MessageBox.show(str)    就报错,不知何故,即使换成下面注释的一行也报错。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/8 20:37:00 [只看该作者]

那就是查不到对应的任务ID号

 

dr = DataTables("任务跟踪").SQLFind(" 任务ID = '" & e.DataRow("任务ID") & "' ")  

If dr Is Nothing Then

    msgbox("没找到")

Else

    Dim str As String = dr("任务_摘要")

    MessageBox.show(str)

End If


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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/3/8 20:54:00 [只看该作者]

问题是我测试了, e.datarow("任务ID")  值为34   ,父表中确有 任务ID值等于34的行,  但是父表的 "任务ID" 为表达式列=[_identity]  也为整型

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/3/8 20:54:00 [只看该作者]

邪门啊

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2016/3/8 21:09:00 [只看该作者]

传实例看看。

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2016/3/8 21:16:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160308211436.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/8 21:45:00 [只看该作者]

表达式列不在数据库里面的。也就是不能用sqlFind查询得到。

 

你试试 dr = DataTables("任务跟踪").SQLFind("[_Identify] = '" & e.DataRow("任务ID") & "' ")  


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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/3/9 8:54:00 [只看该作者]

确实是表达式列不能响应 datacolchanged事件的原因,现在不报错了,但是执行后,父表在前台表中及数据库中 “任务_摘要” 始终看不到值,这是什么原因啊?
 MessageBox.show(dr1("任务_摘要"))  也有值,但就是表中看不到


If e.DataCol.Name="任务ID" Then 
     e.DataRow("子任务ID") = CurrentTable.Compute("MAX(子任务ID)", "任务ID= '" &  e.DataRow("任务ID") &  "'")+1
End If


Dim dr As DataRow =e.DataRow
Dim  dr1 As DataRow = DataTables("任务跟踪").SQLFind(" [_identify] = '" & e.DataRow("任务ID") & "' ")     
If e.DataCol.Name="子任务完成状态" Then 
     If e.DataRow("子任务完成状态")="已完成"  Or e.DataRow("子任务完成状态")="已关闭" Then  
             If e.DataRow("子任务摘要") IsNot Nothing Then    '如果摘要不为空返回摘要,否则返回子任务说明  
             dr1("任务_摘要")=   e.DataRow("子任务摘要")            
             MessageBox.show(e.DataRow("子任务摘要"))
             MessageBox.show(dr1("任务_摘要"))
             Else 
             dr1("任务_摘要")=   e.DataRow("子任务说明")
             End If
            ' MessageBox.show(dr1("_identify"))
            ' MessageBox.show(dr1("任务_摘要"))
     End If 
 End If

 MessageBox.show(dr1("_identify"))
 MessageBox.show(dr1("任务_摘要"))

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/9 10:09:00 [只看该作者]

 你用的是sqlfind,也就是后台查找,后台完成,不显示到前台的。

 

 你改成比如这样

 

Dim  dr1 As DataRow = DataTables("任务跟踪").Find(" [_identify] = '" & e.DataRow("任务ID") & "' ")  

If dr1 Is Nothing Then

    dr1 = DataTables("任务跟踪").SQLFind(" [_identify] = '" & e.DataRow("任务ID") & "' ")  

End If


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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/3/9 11:10:00 [只看该作者]

果然,袍哥威武,之所以没用find,是因为 datatables("表名").  后按table键,没有find函数,我一直以为find函数只能用在tables("表名")

 回到顶部