powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как передать RArguments в DW для сортировки.
18 сообщений из 18, страница 1 из 1
Как передать RArguments в DW для сортировки.
    #32390518
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PB6.5 - Oracle7.
Как можно с помощью Retrieve Argument установить сортировку DataWindow?
Скажем, нужно отсортировать выборку по одному из указанных юзером полей.
Менять SQL DW нет возможности.

1. В SQL "Order By 1, 2, :r_sort" - ошибка; "Order By 1, 2, :r_sort+0" - не работает.
2. В сортировке DataWindow тоже не пойдёт, т.к. передать можно номер поля выборки. Обработать Case() в сортировке можно, но поля могут быть разного типа и нужно все переводить в String. Тогда цифровые, например СУММА, отсортирует неверно.

Заранее всем спасибо.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390566
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в DataWindow можно сделать почти всё, а не заниматься рукоблудием с передачей параметров сортировки.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390623
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит не всё, если это сделать нельзя.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390632
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аргументы для сортировки в базе, если все отсортировать можно на клиенте???
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390639
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К примеру с помощью функции SetSort(...).
Сортировку можно и по computed field установить.
Retrieve Argument для этого привлекать не следует.
Можно, конечно, если задаться целью, установить сортировку типа такой
describe('evaluate("' + r_sort + '",' +getRow() + ')')
но есть способы и попроще.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390645
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу различных типов.

>Обработать Case() в сортировке можно, но поля могут быть разного типа и
>нужно все переводить в String.

Узнайте тип поля и приводите тип к нему.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390647
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если ты видел, я предложил два варианта. Просто, скажем, прямого доступа к DW нету. Единственная связь с ним из диалогового окна - через аргументы.
Хочу хоть как нибудь отсортировать, в базе или на клиенте, без разницы. Юзер видит список названий колонок для сортировки. И выбрать может только одно. Это поле надо добавить к основной сортировке DW.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390665
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теоретически, можно было бы менять в запросе кусочек с ORDER BY. Не совсем понятна фраза "прямого доступа к DW нету" .
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390668
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Узнайте тип поля и приводите тип к нему.

Представляете, какой длины будет выражение Compute
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390683
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Не совсем понятна фраза "прямого доступа к DW нету".

Ну это трудно объяснить и трудно понять. Такая уж специфика работы.
Просто в проекте есть стандартное окошко "ХХХ" для отображения отчетов. Предполагается, что его менять нельзя. Каждый пишет DW и диалоговое окно для него, в котором составляется список аргументов. После всего этого на окне указывается название DW и идет вызов "ХХХ"
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390707
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtuckenshnuder Значит не всё, если это сделать нельзя.
DW здесь не причем: это твоя БД не позволяет использовать bind переменные в orderby. И тут я с ней согласен.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390714
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Просто в проекте есть стандартное окошко "ХХХ" для отображения отчетов.
>Предполагается, что его менять нельзя. Каждый пишет DW и диалоговое окно
>для него, в котором составляется список аргументов. После всего этого на
>окне указывается название DW и идет вызов "ХХХ"
Т.е. вам нельзя и строчки на PowerScript'е написать? Тогда напишите хранимую процедуру в которой динамически стройте запрос.
А почему бы вам в окошке "XXX" не сделать задание сортировки, если уж у вас одно окно на все?
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32390768
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк.

Да в принципе поменять "ХХХ" - будет единственным верным выходом из ситуации. Я просто думал, может ещё кто страдал такой фигнёй.

Всем спасибо.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32391272
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что ж давайте пострадаем фигней.

Допустим наше приложение имеет MDI Интерфейс (w_mdi_main).
Внутри этого окна будут открыаться окна-листы, одним из которых и будет
Ваше окно "ХХХ" для отображения отчетов.
Допустим оно будет называться w_sheet_report.
Внутри этого окна (w_sheet_report) расположен DWControl dw_1.

Спрашивается как можно изменить сортировки этого w_sheet_report.dw_1 из вне, не прибегая к кодированию внутри окна w_sheet_report?

Давайте создадим просто ещё одно окно (WindowType = main!).
В нем создадим кнопку, а на событие Clicked такой код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
//Var
w_sheet_report    l_win
dataWindow        l_dw
//endVar

l_win = w_mainframe.getActiveSheet()

l_dw = l_win.dw_1

l_dw.setSort( "#2  A")  //Отсортируем колонку  2  по возрастанию
l_dw.sort()


Ну всякие там проверки были мной опущены, но это только пример.

PS. А сервис сортировки для DW в окне отчетов должОн быть.

PPS. Вообще-то должен быть пользовательский объект унаследованный от стандартного DataWindow Control, а уж к нему-то и нужно цеплять разные сервисы как-то фильтрация, сортировка, поиск и т.д.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32391317
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для Ermak.

Спасибо большое. В принципе этот метод мне знаком. Но для моей ситуации он не подходит, т.к. "ХХХ" - Response и открывается после указания параметров. Короче выкручиваюсь добавлением сервиса на "ХХХ".

Всем пока.
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32391384
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКороче выкручиваюсь добавлением сервиса на "ХХХ".
И это правильно, но почему "XXX" - Response?
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32391397
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не объяснимо. История умалчивает
...
Рейтинг: 0 / 0
Как передать RArguments в DW для сортировки.
    #32391402
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не объяснимо. История умалчивает
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как передать RArguments в DW для сортировки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]