以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助关于字符串函数 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25171) |
-- 作者:shijiaxu -- 发布时间:2012/11/2 9:50:00 -- 求助关于字符串函数 我写了一段循环生成查找公式的代码,运行出现错误,提示 And 后面缺少操作数.想了好久也没想明白,求高手 tkj.text = e.node.text |
-- 作者:lin_hailun -- 发布时间:2012/11/2 9:58:00 -- 这样查对应的行多麻烦啊,狐爸,TreeNode有个Tag属性,存_Identify吧。 |
-- 作者:狐狸爸爸 -- 发布时间:2012/11/2 10:02:00 -- tkj.text = e.node.text lj = e.node.FullPath mc = e.node.FullName czl = lj.split("\\") lmc = mc.split("\\") For sl = 0 To lmc.length - 1 If czz > "" Then czz = czz & " And " End If czz = czz & "[" & lmc(sl) & "] = \'" & czl(sl) Next czdj = DataTables(bmc).Find(czz) Tables("产品报价单").Current("密度")=czdj("密度") Tables("产品报价单").Current("材料单价")=czdj("单价") |
-- 作者:shijiaxu -- 发布时间:2012/11/2 10:19:00 -- 还是没有解决,应该是循环的问题,我用messagebox()输出czz结果[第一列.第二列.第三列]都在一起。提示找不到这个列。也不可能找到。难道我的循环有错误? |
-- 作者:lin_hailun -- 发布时间:2012/11/2 10:25:00 -- 楼主的数据列,也应该包含数字、字符、日期,这些都是需要分开判断的,因为表达式格式不一样。 等等,帮你写一个。 |
-- 作者:shijiaxu -- 发布时间:2012/11/2 10:27:00 -- 以下是引用muhua在2012-11-2 10:23:00的发言:
把您 czz 结果列出来看下。 列名称的问题找到了我用split分割的是“\\”换成“.”就可以了。但是trimend("And")之后 And 还是存在 |
-- 作者:lin_hailun -- 发布时间:2012/11/2 10:53:00 -- 如果多种类型,就要像下面代码那样,判断一下类型。 再有就是 czz = czz.Trimend(" And ") 这句不能这样用。 tkj.text = e.node.text lj = e.node.FullPath mc = e.node.FullName czl = lj.split("\\") lmc = mc.split("\\") Dim dt As DataTable = DataTables(bmc) For i As Integer = 0 To czl.Length - 1 If dt(lmc(i)).IsString Then ... Else If dt(lmc(i)).IsDate Then ... Else If dt(lmc(i)).IsNumeric Then ... Else If dt(lmc(i)).IsBoolean End If Next czz = czz.Trimend(" And ") czdj = DataTables(bmc).Find(czz) Tables("产品报价单").Current("密度")=czdj("密度") Tables("产品报价单").Current("材料单价")=czdj("单价") |
-- 作者:lin_hailun -- 发布时间:2012/11/2 10:56:00 -- 最后代码写成这样就可以了。 tkj.text = e.node.text lj = e.node.FullPath mc = e.node.FullName czl = lj.split("\\") lmc = mc.split("\\") czz = "1=1 " For sl = 0 To lmc.length - 1 czz = czz & " And " & "[" & lmc(sl) & "] = \'" & czl(sl) & "\'" Next czdj = DataTables(bmc).Find(czz) Tables("产品报价单").Current("密度")=czdj("密度") Tables("产品报价单").Current("材料单价")=czdj("单价") [此贴子已经被作者于2012-11-2 11:31:59编辑过]
|
-- 作者:shijiaxu -- 发布时间:2012/11/2 11:08:00 -- 小林想的很周到,但是应该不是数据类型的事情,我测试过trimend()后表达式没有变化。求狐爸终结 |
-- 作者:shijiaxu -- 发布时间:2012/11/2 11:28:00 -- 楼上的方法试过了。还是不行 |