以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]2个窗口的关联问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=104849)

--  作者:科研小子
--  发布时间:2017/8/6 23:41:00
--  [求助]2个窗口的关联问题

图片点击可在新窗口打开查看此主题相关图片如下: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编辑过]

--  作者:有点甜
--  发布时间: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


--  作者:科研小子
--  发布时间: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
按此在新窗口浏览图片

--  作者:有点甜
--  发布时间: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

 

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


--  作者:科研小子
--  发布时间: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


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

--  作者:有点蓝
--  发布时间: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

--  作者:科研小子
--  发布时间:2017/8/7 21:15:00
--  感谢
谢谢,用了你的方法,可以用了,佩服!!!