powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вопрос к модераторам или людям знающим...
23 сообщений из 23, страница 1 из 1
Вопрос к модераторам или людям знающим...
    #32806004
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал разбираться с PB и появилась кучка вопросов.
Если кто может ответить - призе (если нет - не флеймите прлиз )
1. Как сделать чтобы одно ДВ зависело от другого ДВ, т.е. от того что выбрано в мастер ДВ меняется выборка в подчиненном ДВ.
(вариант ловить Обновление и по нему перекомпилить SQL запрос - и так понятен, но не интересен)

2. второе ДВ (детальное) показывает данные из главного ДВ (таблица для быстрого просмотра основных параметров) Можно конечно ловить перемещения по первому ДВ и изменять позицию второго, но может есть более правильные пути

3. на окне идут подрят N ДДДВ (пункт, подпункт, и т.д. детализация)
как зделать так, чтобы данные в последующем ДДДВ зависили от предыдущего (динамическую перекомпиляцию SQL запроса не предлагать)

4. Как сделать, чтобы по ТАБу крутились в одной записи, а не убегали на следующие (+тоже самое для колесика мышки) в примерах PB 9.0 есть один, где используются несколько ДВ для отобразения одной записи (сверху - основная инф-я, снизу - на закладках частная, так вот там можно прокрутить одно окошко, не прокручивая другие - а это ошибка для оператора)

5. Как передавать информацию (параметры) в открываемое окно?

Уф... ну вроде все пока Если кто может помочь - БОЛЬШОЕ СПАСИБО!!!
ЗЫ PB 9.0, в основном программирую на Access и все здесь приведенное (кроме п.2) легко там реализуется без особого программирования.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32806213
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечаю "навскидку", быстро, по этому не полно и скорее направлениями, чем конкретикой... Так что прошу ногами не пинать, если чего не то сморожу...

1, 2 - смотрите хелп в сторону Shared DataWindow
3 - GetChild(), на событии itemchanging - SetFilter()
4 - не понял, изложите подробнее...
5 - ФАК читать надо! ;-) Использование глобального объекта Message для передачи параметров между формами приложения
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32806769
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор1. Как сделать чтобы одно ДВ зависело от другого ДВ, т.е. от того что выбрано в мастер ДВ меняется выборка в подчиненном ДВ.
(вариант ловить Обновление и по нему перекомпилить SQL запрос - и так понятен, но не интересен)
Если честно, то непонятно, что подразумевалось под перекомпилить SQL запрос.
Я для синхронизации данных в дочернем dw использую событие rowfocuschanged( currentrow ) в родительском dw. В нем просто выбираю необходимые аргументы и выполняю выборку dw_detail.retrieve(arg1, arg2). Это наверно будет самым простым способом. Если Ваш dw_master имеет силь grid или tabular, то для предотвращения паразитного трафика, который возникает при тупой пробежке вверх-вниз в dw_master, можно задействовать таймер (например событие timer() окна в котором находится dw_master), с тем что бы выборка данных в dw_detail происходила допустим через 0.25 сек после перемещения на новую строку в dw_master'e (после срабатывания rowfocuschanged(...)).

автор2. второе ДВ (детальное) показывает данные из главного ДВ (таблица для быстрого просмотра основных параметров) Можно конечно ловить перемещения по первому ДВ и изменять позицию второго, но может есть более правильные пути
В этом случае, действительно имеет смысл использовать Shared dataWindows
Об этом можно почитать (на ангицком естественно) в DataWindow Programmer's Guide Capter 4 Using DataStore Objects Sharing information.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32806794
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор4. Как сделать, чтобы по ТАБу крутились в одной записи, а не убегали на следующие (+тоже самое для колесика мышки) в примерах PB 9.0 есть один, где используются несколько ДВ для отобразения одной записи (сверху - основная инф-я, снизу - на закладках частная, так вот там можно прокрутить одно окошко, не прокручивая другие - а это ошибка для оператора)

Можно примерно так:
1. Создать instance var
Код: plaintext
1.
Private: 
Boolean	 ib_tabPressed  = False
2. В dw определить новое событие, допустим c названием Key, с EventID = pbm_dwnkey
В нем будем выставлять наш флаг
Код: plaintext
1.
2.
3.
4.
if keyflags =  0  then
	if key = keyTab! then
		ib_tabpressed = True
	end if
end if
3 В событии rowfocuschaging будем проверять флаг и предотвращать перход на другую строку
Код: plaintext
1.
2.
3.
4.
if ib_tabpressed then
	ib_tabpressed = False   //Сбросить флаг
	this.setColumn(  1  )	//Собственно обработка по переходу к  1 -й кол.
	Return  1 		//Запретить переход на новую строку
end if
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32806800
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор5. Как передавать информацию (параметры) в открываемое окно?

См. ф-цию openWithParm(...)
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32807033
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IkarОтвечаю "навскидку", быстро, по этому не полно и скорее направлениями, чем конкретикой... Так что прошу ногами не пинать, если чего не то сморожу...

1, 2 - смотрите хелп в сторону Shared DataWindow
3 - GetChild(), на событии itemchanging - SetFilter()
4 - не понял, изложите подробнее...
5 - ФАК читать надо! ;-) Использование глобального объекта Message для передачи параметров между формами приложения
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter

По поводу ФАКа - прошляпил
Shared DW - насколько я понял дает возможность работать с одними и теми же данными (Вопрос а Запросы для общей работы должня бать одинаковые или это не играет роли?)
Вопрос заключается в другом: для детального отображения в подчиненном окне данных из главного ЕДИНСТВЕННЫЙ вариант ловить событие смены/выбора строки и по нему менять отображаемую строку в подчиненном или есть другие возможности?
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32807519
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВопрос заключается в другом: для детального отображения в подчиненном окне данных из главного ЕДИНСТВЕННЫЙ вариант ловить событие смены/выбора строки и по нему менять отображаемую строку в подчиненном или есть другие возможности?
Мне другие возможности не известны?
А какие - теоретически, могут быть, кроме,как отловить переход на другую строку и по нему делать обработку?
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32807722
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest_2Мне другие возможности не известны?
А какие - теоретически, могут быть, кроме,как отловить переход на другую строку и по нему делать обработку?
Теоретически это могло быть уже реализовано в самом DataWindow. Так, например, это реализовано в Delphi.
Если использовать PFC, то там это уже реализовано (смотреть в сторону Linkage Service).
При небольших размерах отношения Master/Detail можно загружать сразу все строки, и при перемещении в Master DataWindow фильтровать Detail.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32807879
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТеоретически это могло быть уже реализовано в самом DataWindow. Так, например, это реализовано в Delphi.
Если использовать PFC, то там это уже реализовано (смотреть в сторону Linkage Service).
При небольших размерах отношения Master/Detail можно загружать сразу все строки, и при перемещении в Master DataWindow фильтровать Detail.
Все равно при перемещении, что равносильно при переходе на другую строку.

Дело в том, что не всегда параметры необходимые для выборки данных в dw_detail находятся в готовом виде в dw_master.
Хотя не спорю, в случае если все данные уже присутствуют в dw_master, выборку данных в dw_detail можно ( опять же в каких-то случаях) автоматизировать самому.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808275
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest_2Мне другие возможности не известны?
А какие - теоретически, могут быть, кроме,как отловить переход на другую строку и по нему делать обработку?
Как я делаю для Access: главный ДДДВ - ничего не меняется, подчиненный ДДДВ - в запросе на выборку элементов в SQL запрос добавляется Where MasterID = MasterID_In_Form (навскидку примерно так).
Для форм это делается через Основное/Подчиненное поля, т.е. стандартно и не требует НИКАКОГО дописания кода, что суть хорошо (+бесплатный бонус в виде автозаполнения связующих полей при внесении нового элемента)
Хочу понять как это можно реализовать на PB?
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808297
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest_2Все равно при перемещении, что равносильно при переходе на другую строку.
Дело в том, что не всегда параметры необходимые для выборки данных в dw_detail находятся в готовом виде в dw_master.
Хотя не спорю, в случае если все данные уже присутствуют в dw_master, выборку данных в dw_detail можно ( опять же в каких-то случаях) автоматизировать самому.Перемещение и переход в данном случае одно и тоже, но интересно, как это сделать проще, а значит быстрее и дешевле (если знаешь, что делаешь ).
Мне нужно связывание по ключу, это легко и непринужденно идентифицирует нужные данные в подчиненном ДВ.

2 Локшин Марк

Спасибо, буду знать куда еще копнуть. Но на данном этапе, я еще не достаточно хорошо освоился с базой PB, чтобы залезать в PFC.
Пошел учиться дальше... ЭТо иногда полезно бывает
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808454
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAКак я делаю для Access: главный ДДДВ - ничего не меняется, подчиненный ДДДВ - в запросе на выборку элементов в SQL запрос добавляется Where MasterID = MasterID_In_Form
И на каждый чих запрос к БД ? Бррр...
Уж лучше написать пять строчек чем такое "без программирования"

В двух словах так -
грузим в оба DDDW все без учета зависимостей.
Ловим в itemchanged ситуацию dwo.Name = 'dddw_1'
и делаем GetChild('dddw_2',dwc); dwc.SetFilter('masterID = '+data); dwc.Filter()

Итого пять строчек максимум.

VoDAкак это сделать проще, а значит быстрее и дешевле
Не ну я удивляюсь. Ваще обленились. Там кода наверное получится меньше чем текста в Ваших постах в несколько раз.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808471
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрей В двух словах так -
грузим в оба DDDW все без учета зависимостей.
Ловим в itemchanged ситуацию dwo.Name = 'dddw_1'
и делаем GetChild('dddw_2',dwc); dwc.SetFilter('masterID = '+data); dwc.Filter()и казалось бы при чем здесь DDDW?
По-моему речь идет о чем-то таком:
на dw_1.rowfocuschanged
dw_2.SetFilter('masterID = ' + dw_1.GetItemNumber(currentrow,'masterid'))

PS. Поздно вечером писать - плохо :)
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808642
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДля форм это делается через Основное/Подчиненное поля, т.е. стандартно и не требует НИКАКОГО дописания кода, что суть хорошо (+бесплатный бонус в виде автозаполнения связующих полей при внесении нового элемента)
Дык, в чем же проблема?
Наследование в PB есть.
Желание избавиться от рутины у Вас тоже имеется.
Пример, того как это решено в Access есть.
Осталось:
- придумать каким способом Вы будете уведомлять свой dw_detail об основных/подчиненных полях. (можно через массив, можно через стек)
- придумать способ передачи ссылки на dw_master. Это не сложно
- автозаполнение связующих полей - тоже не сложно, если решено, то что выше.
- Разобраться с сохранением изменений в dw_detail. Реализация зависит от постановки задачи
- Разобраться с каскадным удалением и изменением. Реализация также зависит от постановки задачи
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808772
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марки казалось бы при чем здесь DDDW?читаем внимательнее:
VoDA3. .... как зделать так, чтобы данные в последующем ДДДВ зависили от предыдущего в последующем DDDW зависели от предыдущего DDDW

Переутомился? Ну ничего... Больше спать, меньше кофе, отпуск взять небольшой.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32808815
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейв последующем DDDW зависели от предыдущего DDDW
От блин, а я то думал, что все разговор про первый вопрос идет.
Да, действительно вечером плохо писать :)
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32809049
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух ты... сколько вас набежало... ну будем отвечать по порядку.

2 Локшин Марк

Согласен, что так – можно, но я просто узнаю возможные методы программирования тех или иных стандартных ситуаций.
Минус приведенного Вами см. ниже

2 Guest_2

На данном этапе перед собой ставлю задачу изучить именно базовые возможности предоставляемые PB. И только затем, при необходимости стоит городить что-то свое. А так и не С++ делал себе библиотеки работы с файлами причем со множеством функций и долго отлаживал, сейчас примерно тоже самое можно реализовать на PB стандартными функциями работы с ИНИ файлами (причем это не нужно писать, а только использовать).
Поэтому, если есть возможность применить стандартный набор ф-ций – его нужно использовать. В этом согласен с ASCRUS’ом, где то на форуме есть его ответы на подобное.

ЗоринАндрейИ на каждый чих запрос к БД ? Бррр...
Возьмем пример (возможно станет понятнее )
Есть учебник по математике, в нем содержание Глав ~100, подглав(подразделений) тоже по 100 (на каждую), учебников уже 10 шт. И допустим в каждой из подглав по 1000 задач.
Таким образом в первый ДДДВ (при работе с фильтрами) нужно грузить 10 строк, во второй 1 000, в третий 100 000, в детализацию 100 000 000. Затем фильтровать.
Хотя можно: 10 стр. в 1, 100 стр. в 2, 100 стр. в 3, 1000 в 4.
Итого на нижнем уровне имеем разницу в 99999000 перекаченных без надобности строк.
А ОНО НАДО?
ЗЫ неявный плюс от фильтрации – данные закачиваются только один раз, а дальше повторно используются. Минус их нужно периодически (или по команде пользователя) перегружать т.к. содержание постоянно меняется (проблема, но не моя )

ЗоринАндрейНе ну я удивляюсь. Ваще обленились. Там кода наверное получится меньше чем текста в Ваших постах в несколько раз.
Можно расценивать это как лень, но ну очень не хочется по вляпаться в танцы с бубнами по причине не до конца изученной предметной области. Посему и узнаю что, да как делается

ЗЫ Спасибочки всем, кто откликнулся.
ЗЗЫ Изучаем дальше, пока ИМХО, встроенных методов борьбы с ентим нет.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32809283
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЗЗЫ Изучаем дальше, пока ИМХО, встроенных методов борьбы с ентим нет.
Енто - точно.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32810693
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще можно не фильтры накладывать, а динамически рулить селектами. Тады и лишней перекачки данных не будет.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32810820
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в селекте DW использовать связанные переменные, то обращение к базе будет не такое уж и тяжёлое - база будет долго думать над первым селектом, а остальные выполнит намного быстрее, запрос в базе уже распарсенный лежит в кэше, уйдёт время только на трафик между клиентом и сервером. Это проверено на ASA и Oracle.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32811665
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Геннадичзапрос в базе уже распарсенный лежит в кэше, уйдёт время только на трафик между клиентом и сервером. Это проверено на ASA и Oracle.
Распарсить запрос - секундное дело, я бы даже сказал милисекундное. Вот построить план запроса - это уже более серьезная вещь, и планы запросов действительно, в принципе, могут кэшироваться. Но любой запрос еше нужно исполнить согласно плану исполнения. Что-то вы про это совсем забыли. Здесь уже может помочь только дисковый кэш, но определенно уже ничего утверждать нельзя.
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32812029
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГеннадичЕсли в селекте DW использовать связанные переменные, то обращение к базе будет не такое уж и тяжёлое - база будет долго думать над первым селектом, а остальные выполнит намного быстрее, запрос в базе уже распарсенный лежит в кэше, уйдёт время только на трафик между клиентом и сервером. Это проверено на ASA и Oracle.Вот именно это и интересно, а как использовать связанные переменные?
...
Рейтинг: 0 / 0
Вопрос к модераторам или людям знающим...
    #32813778
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAВот именно это и интересно, а как использовать связанные переменные?
Связанные переменные - это ваши аргументы к ДВ.

Код: plaintext
select f1,f2,f3 from table1 where f4= 5 
- не верно

Код: plaintext
select f1,f2,f3 from table1 where f4=:arg1
- верно
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вопрос к модераторам или людям знающим...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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