Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Начал разбираться с PB и появилась кучка вопросов. Если кто может ответить - призе (если нет - не флеймите прлиз ) 1. Как сделать чтобы одно ДВ зависело от другого ДВ, т.е. от того что выбрано в мастер ДВ меняется выборка в подчиненном ДВ. (вариант ловить Обновление и по нему перекомпилить SQL запрос - и так понятен, но не интересен) 2. второе ДВ (детальное) показывает данные из главного ДВ (таблица для быстрого просмотра основных параметров) Можно конечно ловить перемещения по первому ДВ и изменять позицию второго, но может есть более правильные пути 3. на окне идут подрят N ДДДВ (пункт, подпункт, и т.д. детализация) как зделать так, чтобы данные в последующем ДДДВ зависили от предыдущего (динамическую перекомпиляцию SQL запроса не предлагать) 4. Как сделать, чтобы по ТАБу крутились в одной записи, а не убегали на следующие (+тоже самое для колесика мышки) в примерах PB 9.0 есть один, где используются несколько ДВ для отобразения одной записи (сверху - основная инф-я, снизу - на закладках частная, так вот там можно прокрутить одно окошко, не прокручивая другие - а это ошибка для оператора) 5. Как передавать информацию (параметры) в открываемое окно? Уф... ну вроде все пока Если кто может помочь - БОЛЬШОЕ СПАСИБО!!! ЗЫ PB 9.0, в основном программирую на Access и все здесь приведенное (кроме п.2) легко там реализуется без особого программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 15:27 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Отвечаю "навскидку", быстро, по этому не полно и скорее направлениями, чем конкретикой... Так что прошу ногами не пинать, если чего не то сморожу... 1, 2 - смотрите хелп в сторону Shared DataWindow 3 - GetChild(), на событии itemchanging - SetFilter() 4 - не понял, изложите подробнее... 5 - ФАК читать надо! ;-) Использование глобального объекта Message для передачи параметров между формами приложения --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 16:49 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
автор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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 05:59 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
автор4. Как сделать, чтобы по ТАБу крутились в одной записи, а не убегали на следующие (+тоже самое для колесика мышки) в примерах PB 9.0 есть один, где используются несколько ДВ для отобразения одной записи (сверху - основная инф-я, снизу - на закладках частная, так вот там можно прокрутить одно окошко, не прокручивая другие - а это ошибка для оператора) Можно примерно так: 1. Создать instance var Код: plaintext 1. В нем будем выставлять наш флаг Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 07:16 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
автор5. Как передавать информацию (параметры) в открываемое окно? См. ф-цию openWithParm(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 07:22 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
IkarОтвечаю "навскидку", быстро, по этому не полно и скорее направлениями, чем конкретикой... Так что прошу ногами не пинать, если чего не то сморожу... 1, 2 - смотрите хелп в сторону Shared DataWindow 3 - GetChild(), на событии itemchanging - SetFilter() 4 - не понял, изложите подробнее... 5 - ФАК читать надо! ;-) Использование глобального объекта Message для передачи параметров между формами приложения --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter По поводу ФАКа - прошляпил Shared DW - насколько я понял дает возможность работать с одними и теми же данными (Вопрос а Запросы для общей работы должня бать одинаковые или это не играет роли?) Вопрос заключается в другом: для детального отображения в подчиненном окне данных из главного ЕДИНСТВЕННЫЙ вариант ловить событие смены/выбора строки и по нему менять отображаемую строку в подчиненном или есть другие возможности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 10:24 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
авторВопрос заключается в другом: для детального отображения в подчиненном окне данных из главного ЕДИНСТВЕННЫЙ вариант ловить событие смены/выбора строки и по нему менять отображаемую строку в подчиненном или есть другие возможности? Мне другие возможности не известны? А какие - теоретически, могут быть, кроме,как отловить переход на другую строку и по нему делать обработку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 13:11 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Guest_2Мне другие возможности не известны? А какие - теоретически, могут быть, кроме,как отловить переход на другую строку и по нему делать обработку? Теоретически это могло быть уже реализовано в самом DataWindow. Так, например, это реализовано в Delphi. Если использовать PFC, то там это уже реализовано (смотреть в сторону Linkage Service). При небольших размерах отношения Master/Detail можно загружать сразу все строки, и при перемещении в Master DataWindow фильтровать Detail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 14:44 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
авторТеоретически это могло быть уже реализовано в самом DataWindow. Так, например, это реализовано в Delphi. Если использовать PFC, то там это уже реализовано (смотреть в сторону Linkage Service). При небольших размерах отношения Master/Detail можно загружать сразу все строки, и при перемещении в Master DataWindow фильтровать Detail. Все равно при перемещении, что равносильно при переходе на другую строку. Дело в том, что не всегда параметры необходимые для выборки данных в dw_detail находятся в готовом виде в dw_master. Хотя не спорю, в случае если все данные уже присутствуют в dw_master, выборку данных в dw_detail можно ( опять же в каких-то случаях) автоматизировать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 15:38 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Guest_2Мне другие возможности не известны? А какие - теоретически, могут быть, кроме,как отловить переход на другую строку и по нему делать обработку? Как я делаю для Access: главный ДДДВ - ничего не меняется, подчиненный ДДДВ - в запросе на выборку элементов в SQL запрос добавляется Where MasterID = MasterID_In_Form (навскидку примерно так). Для форм это делается через Основное/Подчиненное поля, т.е. стандартно и не требует НИКАКОГО дописания кода, что суть хорошо (+бесплатный бонус в виде автозаполнения связующих полей при внесении нового элемента) Хочу понять как это можно реализовать на PB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 18:09 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Guest_2Все равно при перемещении, что равносильно при переходе на другую строку. Дело в том, что не всегда параметры необходимые для выборки данных в dw_detail находятся в готовом виде в dw_master. Хотя не спорю, в случае если все данные уже присутствуют в dw_master, выборку данных в dw_detail можно ( опять же в каких-то случаях) автоматизировать самому.Перемещение и переход в данном случае одно и тоже, но интересно, как это сделать проще, а значит быстрее и дешевле (если знаешь, что делаешь ). Мне нужно связывание по ключу, это легко и непринужденно идентифицирует нужные данные в подчиненном ДВ. 2 Локшин Марк Спасибо, буду знать куда еще копнуть. Но на данном этапе, я еще не достаточно хорошо освоился с базой PB, чтобы залезать в PFC. Пошел учиться дальше... ЭТо иногда полезно бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 18:17 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
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как это сделать проще, а значит быстрее и дешевле Не ну я удивляюсь. Ваще обленились. Там кода наверное получится меньше чем текста в Ваших постах в несколько раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 20:19 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей В двух словах так - грузим в оба 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. Поздно вечером писать - плохо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 21:03 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
авторДля форм это делается через Основное/Подчиненное поля, т.е. стандартно и не требует НИКАКОГО дописания кода, что суть хорошо (+бесплатный бонус в виде автозаполнения связующих полей при внесении нового элемента) Дык, в чем же проблема? Наследование в PB есть. Желание избавиться от рутины у Вас тоже имеется. Пример, того как это решено в Access есть. Осталось: - придумать каким способом Вы будете уведомлять свой dw_detail об основных/подчиненных полях. (можно через массив, можно через стек) - придумать способ передачи ссылки на dw_master. Это не сложно - автозаполнение связующих полей - тоже не сложно, если решено, то что выше. - Разобраться с сохранением изменений в dw_detail. Реализация зависит от постановки задачи - Разобраться с каскадным удалением и изменением. Реализация также зависит от постановки задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 05:30 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Локшин Марки казалось бы при чем здесь DDDW?читаем внимательнее: VoDA3. .... как зделать так, чтобы данные в последующем ДДДВ зависили от предыдущего в последующем DDDW зависели от предыдущего DDDW Переутомился? Ну ничего... Больше спать, меньше кофе, отпуск взять небольшой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 08:49 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейв последующем DDDW зависели от предыдущего DDDW От блин, а я то думал, что все разговор про первый вопрос идет. Да, действительно вечером плохо писать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 09:29 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Ух ты... сколько вас набежало... ну будем отвечать по порядку. 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 перекаченных без надобности строк. А ОНО НАДО? ЗЫ неявный плюс от фильтрации – данные закачиваются только один раз, а дальше повторно используются. Минус их нужно периодически (или по команде пользователя) перегружать т.к. содержание постоянно меняется (проблема, но не моя ) ЗоринАндрейНе ну я удивляюсь. Ваще обленились. Там кода наверное получится меньше чем текста в Ваших постах в несколько раз. Можно расценивать это как лень, но ну очень не хочется по вляпаться в танцы с бубнами по причине не до конца изученной предметной области. Посему и узнаю что, да как делается ЗЫ Спасибочки всем, кто откликнулся. ЗЗЫ Изучаем дальше, пока ИМХО, встроенных методов борьбы с ентим нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 11:07 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
авторЗЗЫ Изучаем дальше, пока ИМХО, встроенных методов борьбы с ентим нет. Енто - точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 12:18 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
А еще можно не фильтры накладывать, а динамически рулить селектами. Тады и лишней перекачки данных не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 22:31 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Если в селекте DW использовать связанные переменные, то обращение к базе будет не такое уж и тяжёлое - база будет долго думать над первым селектом, а остальные выполнит намного быстрее, запрос в базе уже распарсенный лежит в кэше, уйдёт время только на трафик между клиентом и сервером. Это проверено на ASA и Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 06:51 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
Геннадичзапрос в базе уже распарсенный лежит в кэше, уйдёт время только на трафик между клиентом и сервером. Это проверено на ASA и Oracle. Распарсить запрос - секундное дело, я бы даже сказал милисекундное. Вот построить план запроса - это уже более серьезная вещь, и планы запросов действительно, в принципе, могут кэшироваться. Но любой запрос еше нужно исполнить согласно плану исполнения. Что-то вы про это совсем забыли. Здесь уже может помочь только дисковый кэш, но определенно уже ничего утверждать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 13:02 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
ГеннадичЕсли в селекте DW использовать связанные переменные, то обращение к базе будет не такое уж и тяжёлое - база будет долго думать над первым селектом, а остальные выполнит намного быстрее, запрос в базе уже распарсенный лежит в кэше, уйдёт время только на трафик между клиентом и сервером. Это проверено на ASA и Oracle.Вот именно это и интересно, а как использовать связанные переменные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 15:09 |
|
||
|
Вопрос к модераторам или людям знающим...
|
|||
|---|---|---|---|
|
#18+
VoDAВот именно это и интересно, а как использовать связанные переменные? Связанные переменные - это ваши аргументы к ДВ. Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 10:03 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32808454&tid=1338665]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
79ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 10ms |
| total: | 204ms |

| 0 / 0 |
