真的不建议拼接数据窗口SQL,调试很麻烦,这都是20年前的用法 你数据窗口的sql语句可以这样写:select * from dept_dict where dept_code=:dm or :dm='all', 在窗口打开的时候可以这样dw_1.retrieve('all') 查询的时候可以这样: string dm dm=ddlb_dept.text if dm='' or isnull(dm) then dm='all' dw_1.retrieve(dm)
过滤条件,不用写where,不过字符串类型,要拼接'号 ls_filter = "dept_code = '"+dm+"'" 比如dm是1001 如果不拼接,就是按 dept_code =1001 过滤 拼接后,会按 dept_code ='1001' 过滤 另外,filter()之后,不用retrieve(),这个方法调用,会从数据库拉取一次数据。 如果这个表格不是更新非常频繁,就没有这个必要
你的思路大方向就不理想。 retrieve() 是拉取数据,也就是从数据库中读取数据库。通常都是open之后拉取一次,然后添加一个刷新的按钮,如果窗口打开比较长时间,重新拉取一次。 而过滤只需要用filter(),对已经拉取的数据进行过滤筛选就可以了,而不是重新重数据库拉取数据。
因为你第一查完后,数据窗口的sql语句已经被你改变了(加了where后面的条件) 你第二次查又加了where条件 就变成两个where在sql语句了 当然报错 不建议这种直接拼装sql语句的方式, 数据窗口里可以定义参数变量,然后可以用dw_1.retrieve(ls_arg1,ls_arg2)这样的方式获取数据
1,077
社区成员
66,438
社区内容
加载中
试试用AI创作助手写篇文章吧