祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 3999|回复: 6

[待解决] 如何将查询出结果的数据窗口,另存为另一个名称的数据窗口!

[复制链接]

[待解决] 如何将查询出结果的数据窗口,另存为另一个名称的数据窗口!

[复制链接]
cr999

主题

0

回帖

2285

积分

金牌会员

积分
2285
贡献
在线时间
小时
2024-11-10 22:09:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
如何将查询出结果的数据窗口,另存为另一个名称的数据窗口!谢谢!
共享共进共赢
Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
smallanntse

主题

0

回帖

1万

积分

论坛元老

积分
10545
贡献
在线时间
小时
2024-11-11 09:07:50 | 显示全部楼层
用sharedata(dw)??

点评

这个不行,我是把把查询出来结果(数据窗口),另外 保存为一个 新的名称 的数据窗口。可能查询了多次结果,多个结果保存为 多个新数据窗口,方便后面直接调用这些新的数据窗口  详情 回复 发表于 2024-11-11 14:28
共享共进共赢
Sharing And Win-win Results
cr999 楼主

主题

0

回帖

2285

积分

金牌会员

积分
2285
贡献
在线时间
小时
2024-11-11 14:28:30 | 显示全部楼层

这个不行,我是把把查询出来结果(数据窗口),另外 保存为一个 新的名称 的数据窗口。可能查询了多次结果,多个结果保存为 多个新数据窗口,方便后面直接调用这些新的数据窗口
共享共进共赢
Sharing And Win-win Results
swimchen

主题

0

回帖

8632

积分

论坛元老

积分
8632
贡献
在线时间
小时
2024-11-15 00:24:01 | 显示全部楼层
GetFullState()和SetFullState()或者SaveAs->PSR和DataObject=PSR

点评

谢谢  详情 回复 发表于 2024-11-18 09:14
共享共进共赢
Sharing And Win-win Results
cr999 楼主

主题

0

回帖

2285

积分

金牌会员

积分
2285
贡献
在线时间
小时
2024-11-18 09:14:59 | 显示全部楼层
swimchen 发表于 2024-11-15 00:24
GetFullState()和SetFullState()或者SaveAs->SR和DataObject=PSR

谢谢
共享共进共赢
Sharing And Win-win Results
天涯之心

主题

0

回帖

436

积分

中级会员

积分
436
贡献
在线时间
小时
2025-2-5 10:41:18 | 显示全部楼层
声明一个datawindow动态数组,根据查询结果,随时动态赋值就OK了!
共享共进共赢
Sharing And Win-win Results
pbai

主题

0

回帖

879

积分

PBAI

积分
879
贡献
在线时间
小时
4 天前 | 显示全部楼层
运行时 PB 不能直接把查询结果「另存为 PBL 里的新数据窗口对象」(那是设计期功能),但运行期有三种等价做法,都能实现「多次查询的结果保存下来、之后随时调用」:

方案 A:DataStore 数组(推荐,内存中随取随用)
  1. // 适用环境:PB 9+;多次查询结果存为多个 DataStore,之后切换显示
  2. // 前置:窗口实例变量声明 datastore ids_results[](多次点击会累加)
  3. string ls_dept
  4. ls_dept = "SALES"                        // 输入值:查询条件(示例)
  5. datastore lds
  6. long ll_idx
  7. lds = create datastore
  8. lds.DataObject = "d_employee"            // 复用同一个数据窗口对象
  9. lds.SetTransObject(SQLCA)
  10. lds.Retrieve(ls_dept)                    // 带参数查询
  11. ll_idx = UpperBound(ids_results) + 1     // 追加到数组末尾
  12. ids_results[ll_idx] = lds
  13. if UpperBound(ids_results) >= 1 then
  14.     dw_1.ShareData(ids_results[1])       // dw_1 立即显示第 1 份结果
  15. end if
  16. MessageBox("完成", "已保存 " + string(UpperBound(ids_results)) + " 份查询结果")
复制代码

要点:每次查询 create 一个 DataStore 存进数组,dw_1.ShareData(数组元素) 切换显示的是同一份数据(不复制、省内存);需要独立副本时改用 dw_1.Object.DataWindow.Data = ids_results[1].Object.DataWindow.Data

方案 B:另存为 PSR 文件(可跨会话加载)
  1. // 适用环境:PB 9+;把结果落盘,之后用 DataObject 直接加载
  2. dw_1.SaveAs("C:\temp\result_1.psr", PSR!, true)   // 保存结果(含列结构)
  3. dw_2.DataObject = "C:\temp\result_1.psr"          // 新数据窗口指向该 PSR 文件
  4. dw_2.SetTransObject(SQLCA)
  5. dw_2.Retrieve()
  6. MessageBox("完成", "已从 PSR 文件加载 " + string(dw_2.RowCount()) + " 行")
复制代码

若想把结果存进数据库字段,用 swimchen 老师说的 GetFullState/SetFullState:blob lb_state = dw_1.GetFullState() 存库,恢复时 datastore lds = create datastore + lds.SetFullState(lb_state),再 dw_x.ShareData(lds) 显示即可。

pbai
共享共进共赢
Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

客服微信:18669893686
挂谷猜想 · 探索

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2026-8-25 01:46 , Processed in 0.026995 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表