Foxtable(狐表)用户栏目专家坐堂 → [求助]无法在 System.Double 和 System.String 上执行“=”操作。


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

主题:[求助]无法在 System.Double 和 System.String 上执行“=”操作。

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
[求助]无法在 System.Double 和 System.String 上执行“=”操作。  发帖心情 Post By:2012/11/12 11:32:00 [显示全部帖子]

我仿造帮助文档的内容,做了一个筛选目录树,代码如下:

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
For Each nd As WinForm.TreeNode In e.node.Nodes '同步子节点选中状态
    nd.Checked = e.Node.Checked
Next
If e.node.ParentNode IsNot Nothing Then '去掉父节点选中状态
    e.node.ParentNode.Checked = False
End If
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Level > 0 AndAlso nd.ParentNode.Checked Then '如果父节点选中
        Continue For '跳过此节点,处理下一结点
    End If
    If nd.Checked Then
        If flt > "" Then
            flt = flt & " Or "  '注意用or而不是And
        End If
        If nd.Level = 0 Then '注意下面的条件都要用括号括起来
            flt = flt & "( 入职年份 = '" & nd.Text & "')"
        Else
            flt = flt & "( 入职年份 = '" & nd.ParentNode.Text & "' And 部门 = '" & nd.Text & "' And 办公室 = '" & nd.Text & "')"
        End If
    End If   
Next
Tables("职工表").Filter = flt

 

结果,筛选入职年份和部门都能成功,但选择办公室时却出现“无法在 System.Double 和 System.String 上执行“=”操作。”的字样

 

因为示例只有2个筛选条件,我则想增加更多的筛选的目录,是不是 这一段And 办公室 = '" & nd.Text & "'有问题呢?我该怎么表述呢?

 

求教……非常感谢!


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2012/11/12 11:43:00 [显示全部帖子]

呃,我又把代码改为了

 If nd.Level = 0 Then '注意下面的条件都要用括号括起来
            flt = flt & "( 入职年份 = '" & nd.Text & "')"
        Else
            flt = flt & "( 入职年份 = '" & nd.ParentNode.Text & "' And 部门 = '" & nd.Text & "' )"
        End If

 If nd.Level = 1 Then '注意下面的条件都要用括号括起来
            flt = flt & "( 部门 = '" & nd.Text & "')"
        Else
            flt = flt & "( 部门 = '" & nd.ParentNode.Text & "' And 办公室 = '" & nd.Text & "')"
        End If
结果单选入职年份,显示窗口,主界面,目录名,afterchecknode未将对象引用到对象设置的实例

选择里面的部门,又显示语法有问题……我该怎么改呢?


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2012/11/12 11:48:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-11-12 11:42:00的发言:

你要注意里的类型,例如:

 

flt = flt & "( 入职年份 = '" & nd.Text & "')"

 

如果入职年份是数值型,应该改为:

 

 

flt = flt & "( 入职年份 = " & nd.Text & ")"

 

其他同理。

 

 

建议看看:

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

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

 

呃,刚刚看到回复,很谢谢!可是我的入职年份是字符型的……


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2012/11/12 13:09:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-11-12 11:48:00的发言:
纸上不谈兵,做个例子发上说话,几分钟就可以帮你搞定。

好的,非常感谢!我做好了一个例子!

这个例子中,除了上面的问题外,还有这样2个问题(有1个以前请教过,但也是来不及做例子,所以在这里补上……)

1.我做了一个主窗口,但显示出来,却总是在右边留有空白(明明窗口的位置是占满了),不知道该怎么处理。还有窗口里的内容如果太多,就会显示不出来。所以我想设置一个滑动条,想要拖动显示原本不能显示的部分,但我发现控件里面,只有横向的滑动条……这个……我该怎么办(我是要竖向的滑动)

2.上次在狐爸的指导下,有了一个外能筛选组合框。可以在窗口中输入条件类别(比如姓名),在第二个窗口输入条件的值,自由地在不同情况下筛选。但我还想再进一步,将这个两个筛选组合框变得更为万能,即在不增加筛选组合框的情况下,筛选一次后,再使用同样的两个组合框,设定第二个筛选条件,在第一次筛选的基础上作第二次筛选。这样可能么?而帮助文件里的撤销筛选代码,是不是能改成撤销前一次筛选的效果呢?

 

问题一下增多了,对不起!我本来是想分别发帖询问的,但在做例子的时候,这些问题都涌上心头,就在一个例子里一个贴里提出来了。

有些贪心,抱歉!

不管如何,感谢各位指导!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:试验新.zip


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2012/11/12 15:07:00 [显示全部帖子]

以下是引用lin_hailun在2012-11-12 14:45:00的发言:
问题一个一个解决吧。

第一个问题,你要善于使用容器,然后善于使用控件的描定和停靠,就基本可以实现满屏显示了。

第二个问题,可以做到这样的筛选,但是要存储起你筛选过的所有的条件,才可能一次一次的完成。

嗯,是这样的,我是把窗口中的空间上下左右锚定的,然后停靠就自动变成NONE了,但右边还是空出很多。

第二个问题,狐表自带的的筛选功能好像就是这样子的吧,那也是先存储起来,再一次次完成的吗?感觉速度还是很快的,不知道可不可以借用。

 

这个功能不能实现的话,目录树能搞起来也能解决大多数问题了。难为您看我代码了,因为我是用感觉改的……我的目录树想要实现的功能,主贴里详细说了下。不不知道问题是出来哪儿?麻烦指导一下我,可以么?


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2012/11/12 15:40:00 [显示全部帖子]

抱歉,网络延迟!刚刚看到狐爸的代码了,谢谢!

 回到顶部