Foxtable(狐表)用户栏目专家坐堂 → [求助]2个窗口的关联问题


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

主题:[求助]2个窗口的关联问题

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


加好友 发短信
等级:婴狐 帖子:19 积分:212 威望:0 精华:0 注册:2017/6/3 10:59:00
[求助]2个窗口的关联问题  发帖心情 Post By:2017/8/6 23:41:00 [只看该作者]


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


图片点击可在新窗口打开查看此主题相关图片如下:13.png
图片点击可在新窗口打开查看
在窗口A有一个筛选出来的副表table(“dr plus_table3”)【如图1】,双击副表table某一单元格后,打开一个窗口B,里面的内容就是该行的内容【已通过在窗口B afterload中执行文本框绑定的代码实现】,然后我在窗口B做了一个目录树,节点名称就是副表table的日期列的内容【如图2】,已在窗口B afterload事件中通过提取数据表的日期列实现【但有一个疑惑,不知道为什么提取的日期是16:45:19,但在目录树里居然是04:45:19】

现在的问题是我想通过单击目录树的节点(也就是日期),使窗口B的内容变为对应副表table中该日期
的行。我在窗口B目录树的nodemouseclick事件中写的代码是:
(我的想法就是,在副表中找到对应日期的行,光标定位到该行,通过之前的绑定功能,实现窗口B内容的改变)
Dim tim As String 
Dim dr As DataRow
Dim s As Integer
      tim = e.Node.Name
dr =DataTables("录入").Find("[日期] =#" & tim & "#")    ’DataTables("录入")是副表的数据表
      s=Tables("Dr Plus_Table3").FindRow(dr)
  If s> 0 Then
    Tables("Doctor Plus_Table3").Position= s
End If
但问题就是,点击目录树的节点没有反应,窗口B的内容没有改变,呜呜,不知道为什么,求高手指教,或者另外找一种算法。在此谢过了!!
[此贴子已经被作者于2017/8/6 23:49:51编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/7 9:33:00 [只看该作者]

 这个是bug,生成目录树有问题。但一般不用日期时间列生成目录树吧?

 

 这样生成目录树

 

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each s As String In DataTables("表B").GetValues("第四列")
    trv.nodes.add(s)
Next


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


加好友 发短信
等级:婴狐 帖子:19 积分:212 威望:0 精华:0 注册:2017/6/3 10:59:00
[求助]  发帖心情 Post By:2017/8/7 14:20:00 [只看该作者]

谢谢,您的建议,我改了代码之后不在出现日期不一致了。
但是第2个问题还是没有解决:
现在的问题是我想通过单击目录树的节点(也就是日期),使窗口B的内容变为副表table中该日期对应行的各个列【比如“姓名文本框”对应姓名列】。我在窗口B目录树的nodemouseclick事件中写的代码是:
(我的想法就是,在副表中找到对应日期的行,光标定位到该行,通过之前的绑定功能,实现窗口B内容的改变)
Dim tim As String 
Dim dr As DataRow
Dim s As Integer
      tim = e.Node.Name
dr =DataTables("录入").Find("[日期] =#" & tim & "#")    ’DataTables("录入")是副表的数据表
      s=Tables("Dr Plus_Table3").FindRow(dr)
  If s> 0 Then
    Tables("Doctor Plus_Table3").Position= s
End If
但问题就是,点击目录树的节点没有反应
此主题相关图片如下:13.png
按此在新窗口浏览图片

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/7 14:28:00 [只看该作者]

试试改成

 

Dim s As Integer = Tables("Dr Plus_Table3").FindRow("[日期] =#" & e.Node.Name & "#")
msgbox(s)
If s> 0 Then
    Tables("Doctor Plus_Table3").Position= s
End If

 

如果还不行,做个例子上来测试。


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


加好友 发短信
等级:婴狐 帖子:19 积分:212 威望:0 精华:0 注册:2017/6/3 10:59:00
[求助]  发帖心情 Post By:2017/8/7 19:49:00 [只看该作者]

版主您好,我已经找出原因:通过【日期列】寻找日期相同的列,就是提示找不到。比如我要在表1的日期列(如图
图片点击可在新窗口打开查看此主题相关图片如下:14.png
图片点击可在新窗口打开查看
)找“2017-08-01 16:45:19”,
   dr=DataTables("表1").Find("[日期] =#2017-08-01 16:45:19#),dr就是找不到;通过filter方法也是一样,想问是不是这个日期列的真实本质的值不是2017-08-01 16:45:19。

注:日期列类型:日期时间型;列属性设置了:datelongtime


想问有什么方法可以解决么,实在不行我再做一个例子吧,谢谢版主!

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/7 20:39:00 [只看该作者]

可能日期还带有毫秒的,只是不显示

试试,给节点名设置为_Identify主键的值,然后通过这个值进行查询
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each s As String() In DataTables("录入").GetValues("_Identify|日期")
    trv.nodes.Add(s(0),s(1))
Next

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


加好友 发短信
等级:婴狐 帖子:19 积分:212 威望:0 精华:0 注册:2017/6/3 10:59:00
感谢  发帖心情 Post By:2017/8/7 21:15:00 [只看该作者]

谢谢,用了你的方法,可以用了,佩服!!!

 回到顶部