我目前正在使用 powerbuilder 6.5 在我的应用程序中,我想编写一个代码,其中一个窗口中的任何更改都应该反映另一个窗口。两个窗口正在使用同一个表。如果我们在一个窗口中更改,如果另一个窗口较早打开,它不会反映在另一个窗口中。我能做些什么?
3 回答
了解更多关于您要完成的工作可能会有所帮助。两个窗口是否在单个用户的屏幕上同时打开?或者是一个用户可以使用一个窗口,而另一个用户正在查看第二个窗口,等待查看更新?
数据窗口本身不会自动检索基础表的更新。事实上,如果你已经正确配置了datawindows,更新规则应该提供一些并发保护,不会让第二个dw在第一次更新后更新同一张表。DataWindow2 将感知到发生了变化,并试图阻止破坏 DataWindow1 的更改。但同样,如果在您的上下文中第二个窗口是只读的,这可能不是问题。
您可以让第一个窗口完成更新,然后检查第二个窗口是否存在并检索它。更好的是,使用非可视化业务对象作为中间处理程序(并将讨厌的跨窗口通信代码排除在 GUI 之外)。当第一个窗口的更新成功时,它会告诉业务对象它已完成,然后对象可以告诉第二个窗口进行检索。但是,如果您的第二个窗口是可更新的,则需要做更多的工作。
使用datawindow ShareData 方法来共享两个datawindow 的内容(你说的table 是指datawindow,对吧?)。
顺便说一句,我很同情你,不得不使用那只 PB 6.5 恐龙。OTOH,我们刚刚从 PB 10 迁移到闪亮的新 PB 11.5,它拥有我用过的最糟糕的 IDE。作为一名程序员,看到如此糟糕的软件,我感到很尴尬。Sybase 应该为自己感到羞耻,发布了如此糟糕的产品。
@伊兰
不,我的意思只是桌子。
两个窗口使用不同的数据窗口,对于这些数据窗口,它使用同一个表。
因此,如果我们在一个窗口中进行更改,它不会在打开另一个窗口时反映该更改。