В настоящее время я использую powerbuilder 6.5. В своем приложении я хочу сделать код, в котором любое изменение в одном окне должно отражать другое окно. Два окна используют одну и ту же таблицу. если мы изменим в одном окне, это не отразится в другом окне, если другое окно было открыто раньше. Что я могу сделать?
Закрытие текущего открытого окна при переходе в другое окно в Power Builder
Ответы (3)
Возможно, вам будет полезно узнать немного больше о том, чего вы пытаетесь достичь. Оба окна открыты одновременно на экране одного пользователя? Или одно окно доступно одному пользователю, а второе просматривается отдельным пользователем, ожидающим обновления?
Сами по себе окна данных не будут извлекаться автоматически при обновлении базовой таблицы. На самом деле, если вы правильно настроили окна данных, правила обновления должны обеспечить некоторую защиту от параллелизма и не позволят второму dw обновить ту же таблицу после первого обновления. DataWindow2 обнаружит, что произошло изменение, и попытается предотвратить затирание изменений DataWindow1. Но опять же, это может не быть проблемой, если в вашем контексте второе окно доступно только для чтения.
Вы можете завершить обновление первого окна, а затем проверить существование второго окна и получить его. Еще лучше использовать невизуальный бизнес-объект в качестве промежуточного обработчика (а также держать неприятный код межоконной связи вне графического интерфейса). Когда обновление первого окна прошло успешно, оно сообщает бизнес-объекту, что оно выполнено, а затем объект может сообщить второму окну о необходимости извлечения. Но нужно будет сделать больше, если ваше второе окно будет обновляться.
Используйте метод ShareData окна данных, чтобы поделиться содержимым двух окон данных (вы имеете в виду окно данных, когда говорите таблицу, верно?).
Кстати, я сочувствую вам, что вам приходится использовать этого динозавра PB 6.5. OTOH, мы только что перешли с PB 10 на новенький PB 11.5, и у него худшая IDE, которую я когда-либо использовал. Мне, как программисту, стыдно видеть такое ужасное программное обеспечение. Sybase должно быть стыдно за себя, выпуская такой паршивый продукт.
@ Эран
Нет, я имел в виду только стол.
Два окна используют разные окна данных, и для этих окон данных используется одна и та же таблица.
Поэтому, если мы изменим в одном окне, это не отразится на другом окне, если оно открылось.