标题:请问老师,在 treeview 点击姓名节点,为什么出现别名用被使用?
只看楼主
yin710
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2013-5-27
结帖率:88.89%
已结贴  问题点数:20 回复次数:8 
请问老师,在 treeview 点击姓名节点,为什么出现别名用被使用?
各位老师,我在学习treeview,现在出现2个问题,希望请教各位老师,给予解答,谢谢
1、我点击treeview姓名节点后,为什么会出现别名已被使用?先在olecontrol1的node click 设置:
Select * from 数据表 where node.text==姓名 into cursor 临时表
查询的数据想用多个文本框显示,开始运行很好,但过后就不行了。
2、如何使用treeview,点击a部门-点击b人员-查询时候希望有两个条件a部门和b人名,避免重复。
THISFORM.oleTree.Nodes.Add(cKey_BM,4,ALLTRIM(wjmjs.Key),ALLTRIM(wjmjs.lxr),3,3)
 我用node.text =thisform.text1.value试了试 ,这个node.text即可做部门,也可做姓名

搜索更多相关主题的帖子: 数据表 cursor 文本框 where 姓名 
2014-07-14 19:45
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
临时表的名称与其他打开的表重名了,换个名称就行。

活到老,学到老! http://www. E-mail:hu-jj@
2014-07-14 19:50
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
得分:0 
这一句:node.text =thisform.text1.value,是用文本框的值,做节点的标签吗?
如果希望:有两个条件a部门和b人名,避免重复。那么,就用人名和其父节点,或部门和其子节点。
要看你点击的节点是什么节点。
2014-07-14 21:10
yin710
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2013-5-27
得分:0 
两位老师,1、好像不是临时表或与打开的表重名,我吧临时表换了名字能运行,过后就又出现别名被使用了。
          2.如果点击人员姓名后,查询出这个人呢的数据,显示在文本框里,如果是重名,就有两个以上,如何把部门作为一个条件呢?
            在treeview中,点击a部门-点击b人员-查询时候希望有两个条件a部门和b人名,避免重复。如何代码呢》
2014-07-14 21:33
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
以下是引用yin710在2014-7-14 21:33:51的发言:

两位老师,1、好像不是临时表或与打开的表重名,我吧临时表换了名字能运行,过后就又出现别名被使用了。
          2.如果点击人员姓名后,查询出这个人呢的数据,显示在文本框里,如果是重名,就有两个以上,如何把部门作为一个条件呢?
            在treeview中,点击a部门-点击b人员-查询时候希望有两个条件a部门和b人名,避免重复。如何代码呢》

过后又出现别名被使用更能证明是使用了相同的名字作表别名。

活到老,学到老! http://www. E-mail:hu-jj@
2014-07-15 06:37
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
得分:10 
当点击 b人员节点时,此节点的父节点肯定是对应的 a部门节点。比如: 有4个值比较重要。
   with thisform.olecontrol1
        if ! .selecteditem.index=1
           ? .selecteditem.parent.key   &&这是点击的节点,对应的部门‘键值’
           ? .selecteditem.parent.text  &&这是点击的节点,对应的部门‘标签’
           ? .selecteditem.key          &&这是点击的节点,本身‘键值’
           ?..selecteditem.text        &&这是点击的节点,本身‘标签’
        endif
   endwith
         b部门的有关值,和本节点的有关值,可以根据需要,作为查询条件,应该可以吧。
  关于‘别名已被使用’,因为没见源代码,不好判断的。但是,你可以跟踪一下,看看那一句代码有问题,
先分析分析。
收到的鲜花
  • yin7102014-07-18 16:05 送鲜花  3朵  
2014-07-15 22:23
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:10 
既然系统提示“别名已被使用”,毫无疑问,别名与已打开的数据表重名了。实际应用中,对临时表的使用应该养成良好的习惯:一是,当临时表完成使命后应及时关闭;二是,为防止临时表与其他表同名,可通过sys(2015)函数及别名表达式来生成和使用临时表名称。
对于楼主的第2个问题,我没有看太明白:难道同一个部门中就没有姓名相同的员工了吗?oleTree控件对每个节点的text属性没有任何要求,但每个节点的key属性必须唯一。若按姓名查询,可以在第一次单击“查询”时查找满足条件的第一个员工,当再次单击“查询”时,查找满足条件的第二个员工,依次类推。判断是首次查询还是再次查询的依据是:看查询条件是否改变。
收到的鲜花
  • yin7102014-07-18 16:05 送鲜花  3朵  

泉城飞狐
2014-07-15 22:35
yin710
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2013-5-27
得分:0 
各位老师,关于别名已被使用,我是这样发现的,表单中加入oletree控件,旁边加入文本框作为信息显示,查询以后到临时表,为了能在文本框里显示查询数据,我在文本框的属性controlsource设置了临时表.部门,临时表.姓名等等,开始运行正常,以后就出现别名已被使用,不能运行了。我是这样解决的:在oletree的nodeclick里加入thisform.text1.value=临时表.部门名称  thisform.text2.value=临时表.姓名....就解决这个问题啦。因为刚学习treeview,6楼老师的指点慢慢领会吧。谢谢老师!
2014-07-18 15:59
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
不要将文本框的ControlSource属性设置为可能被反复覆盖的临时表字段。对于本问题来说,可以取消文本框的ControlSource设置,而采用“THISFORM.Text1.Value=临时表.字段”的形式。

若一定要采用ControlSource来显示查询结果,也是可以的。方法如下:
1. 在表单的 LOAD 事件中通过 Create Cursor 命令建立临时表
2. 查询时先通过 Zap 命令清空临时表
3. 再通过“Insert Into 临时表 (字段) Select 字段 From 表”的形式生成临时表
4. 最后,通过 THISFORM.Refresh 显示查询结果

泉城飞狐
2014-07-18 19:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434042-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.225408 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved