Expression is not valid问题,求高手指教,在线等

stone100 2008-04-30 09:14:06
错误一:
string start_company,end_company //设默认值
start_company='0';
end_company='9999'
dw_post_settle_account.retrieve(v_start_date,v_flag,dw_2.getitemstring(1,"retail_category_id"))
dw_post_settle_account.setfilter("")
dw_post_settle_account.filter()
if rb_12.checked then //如rb_12checked则将使用者输入的值赋给这两个变量
start_company=dw_11.getitemstring(1,"company_id")
end_company=dw_11.getitemstring(1,"company_id")
end if
dw_post_settle_account.setfilter("(fbks>="+start_company+")"+" and (fbks<="+end_company+")")
dw_post_settle_account.filter()

错误二:
dw_post_settle_account.retrieve(v_start_date,v_flag,dw_2.getitemstring(1,"retail_category_id"))
dw_post_settle_account.setfilter("")
dw_post_settle_account.filter()
if rb_12.checked then
fbks=dw_11.getitemstring(1,"company_id")
dw_post_settle_account.setfilter("fbks='"+fbks+"'")
dw_post_settle_account.filter()
end if
这两种写法,执行时均报“Expression is not valid”,求指教
...全文
1928 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhd_BlueSky 2010-07-06
  • 打赏
  • 举报
回复
成功了!真的学习了点儿!顶一下:
stone100 2008-04-30
  • 打赏
  • 举报
回复
成功成功,最后终于搞定,是有个列名引起的,修改后OK,谢谢大家,尤其是sdhylj,还有 AFIC,SummerHeart三位,答复的与答案一致。
sdsxlj 2008-04-30
  • 打赏
  • 举报
回复
fbks是什么类型?
stone100 2008-04-30
  • 打赏
  • 举报
回复
现在是这样,仍是报这个错,但是,浏览的结果能显示在数据窗里了。这是怎么回事?能否单独去掉错误提示?
stone100 2008-04-30
  • 打赏
  • 举报
回复
仍在试,请各位稍等
编程夜猫 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 AFIC 的回复:]
打开你的dw,找到column specification,那里是正确的列名。
[/Quote]
同意,
sdhylj 说的还不够完整,sdhylj 说的只是默认状态下的情况。
dw函数量的列名,正确的应该打dw设计界面,打开column specification查看。
左边的就是正确的列用。右边的就与SQL语句中的列对应的名字。
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复

//用如下语句看看列名是什么.
int li_col
string ls_name
for li_col = 1 to long(dw_1.object.datawindow.column.count)
ls_name = dw_1.describe("#"+string(li_col)+".name")
messagebox("column name",ls_name)
next


我的表名是v_table_1,如果加上列名,是否v_table_1_fbks这样写?
---------
应该是这样

另外,显示出来的列中,没有fbks,没有关系吧?
---------
select列表里面必须出现fbks,否则也是不行的.
AFIC 2008-04-30
  • 打赏
  • 举报
回复
打开你的dw,找到column specification,那里是正确的列名。
stone100 2008-04-30
  • 打赏
  • 举报
回复
用上面的方法我挨个试了,仍报Expression is not valid
我的表名是v_table_1,如果加上列名,是否v_table_1_fbks这样写?另外,显示出来的列中,没有fbks,没有关系吧?
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复
又不是倒分.蝗族的行为才卑鄙呢.
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dawugui 的回复:]
引用 11 楼 sdhylj 的回复:
楼主,如果我的方法可行请尽快接贴,马上就双星了.谢谢!

哈哈,卑鄙.
[/Quote]怎么这样说呢,劳动所得.
dawugui 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sdhylj 的回复:]
楼主,如果我的方法可行请尽快接贴,马上就双星了.谢谢!
[/Quote]
哈哈,卑鄙.
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复
楼主,如果我的方法可行请尽快接贴,马上就双星了.谢谢!
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复
你用如下代码看看列的名称是什么:

int li_col
string ls_name
for li_col = 1 to long(dw_1.object.datawindow.column.count)
ls_name = dw_1.describe("#"+string(li_col)+".name")
messagebox("column name",ls_name)
next

另外你的列是什么类型?如果是字符型,用如下方式:
dw_1.SetFilter("所在表名_列名=~""+字符变量+"~"")
如果是数据型:
dw_1.SetFilter("所在表名_列名="+字符变量)

dw_1.SetFilter("所在表名_列名="+string(数据变量))
注:如果上面代码报出的列名没有表名前缀,则列名前就不需要加表名.
zscstar 2008-04-30
  • 打赏
  • 举报
回复
1:
dw_post_settle_account.setfilter("(fbks >= "+start_company+")"+" and (fbks <= "+end_company+")")
2:
dw_post_settle_account.setfilter("fbks = '"+fbks+"'")
stone100 2008-04-30
  • 打赏
  • 举报
回复
刚没刷新,我再试sdhylj 的方法
stone100 2008-04-30
  • 打赏
  • 举报
回复
试了二位所说的方法,还是不成
dawugui 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sdhylj 的回复:]
一般情况下,如果数据窗口是由多个表关联得来的,刚字段的命名规则是:所在表名_字段名,如:
tba(id,name1)
tbb(sn,name2)
select * from tba,tbb where id=sn;

在数据窗口的字段名称就是:tba_id,tba_name1,tbb_sn,tbb_name2
在使用setfilter()/getitemxxx()等时就要使用:
所在表名_字段名
的形式,而不是简单的字段名称.
[/Quote]
同意.
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复
一般情况下,如果数据窗口是由多个表关联得来的,刚字段的命名规则是:所在表名_字段名,如:
tba(id,name1)
tbb(sn,name2)
select * from tba,tbb where id=sn;

在数据窗口的字段名称就是:tba_id,tba_name1,tbb_sn,tbb_name2
在使用setfilter()/getitemxxx()等时就要使用:
所在表名_字段名
的形式,而不是简单的字段名称.
青锋-SS 2008-04-30
  • 打赏
  • 举报
回复
错误一:
string start_company,end_company //设默认值
start_company='0';
end_company='9999'
dw_post_settle_account.retrieve(v_start_date,v_flag,dw_2.getitemstring(1,"retail_category_id"))
dw_post_settle_account.setfilter("")
dw_post_settle_account.filter()
if rb_12.checked then //如rb_12checked则将使用者输入的值赋给这两个变量
start_company=dw_11.getitemstring(1,"company_id")
end_company=dw_11.getitemstring(1,"company_id")
end if
dw_post_settle_account.setfilter("(fbks>="+start_company+")"+" and (fbks <="+end_company+")")
//上面语句改为:
//dw_post_settle_account.setfilter("(fbks>=~""+start_company+"~")"+" and (fbks <=~""+end_company+"~")")
//如还出错,则需要改成如下:
//dw_post_settle_account.setfilter("(所在表名_fbks>=~""+start_company+"~")"+" and (所在表名_fbks <=~""+end_company+"~")")
dw_post_settle_account.filter()

错误二:
dw_post_settle_account.retrieve(v_start_date,v_flag,dw_2.getitemstring(1,"retail_category_id"))
dw_post_settle_account.setfilter("")
dw_post_settle_account.filter()
if rb_12.checked then
fbks=dw_11.getitemstring(1,"company_id")
dw_post_settle_account.setfilter("fbks='"+fbks+"'")
//上面语句改为:
//dw_post_settle_account.setfilter("所在表名_fbks='"+fbks+"'")
dw_post_settle_account.filter()
end if
加载更多回复(3)

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧