怎样查找出某一数据窗口中没有显示的记录?

xjhwq 2004-12-02 10:40:57
有两个数据窗口,一共有一千条记录,在第一个数据窗口中显示一部分,要求另一个数据窗口显示剩余记录,怎样做比较快效率高,因为有可能有上万条记录,而且第一个数据窗口中的数据量也是变化的
...全文
300 18 打赏 收藏 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjhwq 2004-12-02
  • 打赏
  • 举报
回复
好象应该是这样,我先试试,谢谢!
sun1976 2004-12-02
  • 打赏
  • 举报
回复
建立数据窗口的时候用sql select选数据源
随便选
然后数据窗口设计界面菜单design/datasource (工具栏上sql按钮也可),会出现新界面
菜单design /convert to syntax 就看到sql 了
把sql换成上面告诉你的,点工具栏上类似数据窗口控件的按钮(tooltip是return),回到数据窗口设计界面,保存就行了
sun1976 2004-12-02
  • 打赏
  • 举报
回复
假设你以id为主键

一:select * from 手工盘点表
二:select * from 库存表
where id not in(select id
from 手工盘点表)

两个数据窗口分别retrieve()就行了

xjhwq 2004-12-02
  • 打赏
  • 举报
回复
我是两个表,一个是库存数据表,一个是盘点数据表但不知怎按你说的第二个的实现,sql的where 多加条件我没用过能不能具体点儿
sun1976 2004-12-02
  • 打赏
  • 举报
回复
你手工录的盘点表和库存是两个表还是一个表?两个表照上面得做
一个表就直接靠区分是否盘点手工录入的字段在数据窗口sql的where中过滤就可以了
sun1976 2004-12-02
  • 打赏
  • 举报
回复
那你直接做两个数据窗口对象不就得了?
第一个:检索出所有手工录入的盘点内容
第二个:类似于第一个,sql的where 多加点条件:主键 not in (select 主键 from 和dw_1的sql后半截一样)
xjhwq 2004-12-02
  • 打赏
  • 举报
回复
我是在做库存盘点,库存中有10000种货物,库管员手工录入盘点表时只有9800种货物,而剩余200种是漏盘的,要求电脑将漏盘货物自动显示在第二个漏盘窗口中,由库管员做进一步处理
gaopipigao 2004-12-02
  • 打赏
  • 举报
回复
就是对数据窗口中用静态sql来限制一下。
gaopipigao 2004-12-02
  • 打赏
  • 举报
回复
你用filter和setfilter就是了,数据窗口中用where语句,在第二个中可以增加!
sun1976 2004-12-02
  • 打赏
  • 举报
回复
那么你需要怎么确定哪些在第一个数据窗口,哪些再第二个数据窗口?你是根据什么把数据分开的?
你这么做的目的是什么?
把你的完整操作过程说出来
首先进入界面什么样?
直接分到两个数据窗口还是通过什么操作把原来一个数据窗口的挪到另一个数据窗口一部分?
xjhwq 2004-12-02
  • 打赏
  • 举报
回复
我遇到的情况是这样的应该没有两位所说的那么复杂,假如10000条数据,第一个窗口现在有9800条,那么剩余的200条数据应该自动显示在每二个数据窗口中,不知是否描述清楚了!
青锋-SS 2004-12-02
  • 打赏
  • 举报
回复
打开数据窗口,Design菜单/Data Source,然后在Design菜单里面设置Retrieve arguments,设置好了以后在where条件里面加上.
sun1976 2004-12-02
  • 打赏
  • 举报
回复
先用一个数据窗口retrieve(),在retrieve前dw_1.setdraw(false),retrieve后setdraw(true)可以提高速度,同理,其他行变化较大的情况前后也可以设置setredraw()
然后用setfiler(),filter()过滤掉不显示的
然后rowsmove()把过滤掉的放到另外一个数据窗口
如果这几个函数不会用,给我发站内消息给你详细解释
xjhwq 2004-12-02
  • 打赏
  • 举报
回复
怎么加请说具体点儿
青锋-SS 2004-12-02
  • 打赏
  • 举报
回复
加条件retrieve()。
xjhwq 2004-12-02
  • 打赏
  • 举报
回复
用这种方法解决比较好
select * from 库存表
where id not in(select id
from 手工盘点表)

两个数据窗口分别retrieve()就行了
lzheng2001 2004-12-02
  • 打赏
  • 举报
回复
如果条件是动态改变的,建议用filter功能!如果条件是固定的用SQL或FILTER都可

1.dw_1: retrieve()全部数据
根据你查询的条件过虑
dw_1.setfilter(条件)
dw_1.filter()
//再用rowscopy() 把过虑缓冲区的数据复制到dw_2中
dw_2.reset()
dw_1.rowscopy(....)
gaopipigao 2004-12-02
  • 打赏
  • 举报
回复
大哥,你早点说明两个表,什么问题不就早给你解决了!

611

社区成员

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

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