|
|
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите новичку, на PowerBuilder перехожу с Delphi. Есть DataWindow, отображающий поля account и adress, при открытии окна в режиме Grid только для чтения. Нужно для него сделать шапку, где вводится значение account, нажимается ENTER и в DataWindow отображаются только записи соответствующие введеному значению account. 1) Как при нажатии ENTER добавить условие WHERE в SQL-запрос DataWindow ? 2) Как отобразить этот же DataWindow в другом окне по двойному клики мышки на любой строке этого DataWindow, но уже в режиме Freeform для редактирования ? Или придется создавать новый DataWindow с таким же SQL-запросом но в режиме Freeform ? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 14:08 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Как вариант Надо поместить на форму SingleLineEdit Control (напр. sle_1) и CommandButton (напр. можно назвать кнопку Enter). В Sle_1 вводим значение account. В событии кнопки Clicked и вызвать методы DataWindow SetFilter() и Filter() см. HELP: Код: plaintext 1. З.Ы. Советую ознакомиться с Help"ом, примерами в комплекте с PowerBuilder, там много чего интересного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:07 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Вариант с фильтрами вполне подходит, но есть одно но... В таблице много записей (более 200 тыс.), не хочется тянуть их все на клиента, поэтому используется TOP 100. А фильтр, не производит повторного запроса на сервер, а фильтрует данные клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:16 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerЗдравствуйте! Помогите новичку, на PowerBuilder перехожу с Delphi. Есть DataWindow, отображающий поля account и adress, при открытии окна в режиме Grid только для чтения. Нужно для него сделать шапку, где вводится значение account, нажимается ENTER и в DataWindow отображаются только записи соответствующие введеному значению account. 1) Как при нажатии ENTER добавить условие WHERE в SQL-запрос DataWindow ? 2) Как отобразить этот же DataWindow в другом окне по двойному клики мышки на любой строке этого DataWindow, но уже в режиме Freeform для редактирования ? Или придется создавать новый DataWindow с таким же SQL-запросом но в режиме Freeform ? Заранее спасибо. 1. Для этого можно использовать SetSQLSelect, но если эти данные уже отобраны разумнее их фильтровать на клиенте при помощи SetFilter(...)/Filter() 2. Придется создавать новое DataWindow в режиме FreeForm, причем SQL запрос к нему прикреплять совершенно не обязательно (можно создать DataWindow типа External) - главное чтобы Resultset SQL запроса совпадал с тем, что объявлено в External DataWidnow. А данные туда/сбда с помощъю RowsMove(...) гонять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:17 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Запрос выглядит так: Код: plaintext 1. 2. 3. Хочется получить такое: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:19 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Метод Retrive() Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:23 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerЗапрос выглядит так: Код: plaintext 1. 2. 3. Хочется получить такое: Код: plaintext 1. 2. 3. 4. В режиме редактирования запроса Design/Retrieval Arguments указываете account типа string и свой запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:24 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
к Локшин Марк: Не хочется запоминать старый вариант SQL, записывать новый вариант SQL, используя ф-ции GetSqlSelect и SetSqlSelect. Может быть можно шапку сделать в виде еще одного DataWindow, связать его с моим DataWindow по параметру :account ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:24 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Что то не получается... Отредактировал запрос так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:34 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerЧто то не получается... Отредактировал запрос так: Код: plaintext 1. 2. 3. 4. Еще раз. При редактировании SQL запроса зайдите в меню Design/Retrieval arguments объявите там аргумент account типа string и напишите запрос Код: plaintext 1. 2. 3. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:40 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Сделал так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:51 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Пытаться писать что-то типа sle_1.text внутри SQL запроса - в корни неправильно, т.к. это просто текст SQL запроса и ни о каких объектах PowerBuilder'а он не знает. Я читаю книгу PowerBuilder 5.0 Брайана Дж. Смита и Гордона У. Шаада. Они приводят пример встроенного запроса: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:58 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Может Query mode подойдет? См. справку по QueryMode DataWindow object property ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:05 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Запарился с "%" в конце like, сори ))) Но все равно PB ругается на конструкцию: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:09 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner Локшин Марк Пытаться писать что-то типа sle_1.text внутри SQL запроса - в корни неправильно, т.к. это просто текст SQL запроса и ни о каких объектах PowerBuilder'а он не знает. Я читаю книгу PowerBuilder 5.0 Брайана Дж. Смита и Гордона У. Шаада. Они приводят пример встроенного запроса: Код: plaintext 1. 2. 3. 4. 5. Различайте Embeded SQL и запрос в DataWindow и DataStore - это совершенно разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:10 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerЗапарился с "%" в конце like, сори ))) Но все равно PB ругается на конструкцию: Код: plaintext 1. Потому, что теперь ищется строка :account% Нужно так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:11 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyМожет Query mode подойдет? См. справку по QueryMode DataWindow object property К сожалению DataWindow я создавал в режиме Quick Select и не знаю как перевести его теперь в режим Query... Не очень хочется заново создавать DataWindow в режиме Query... P.S. Да уж... После Delphi PB смортится какой-то очень громоздкой и неудобной средой разработки... ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:12 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Локшин МаркНужно так Код: plaintext 1. Сделал именно так ! Может из за того что я в режиме Quick Select и PB не понимает синтаксис ? Вылетает такая ошибка: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:18 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Ну наконец-то !!!!!!!!!!! Запрос такой: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:26 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerС пунктом 1) разобрался. Как быть с пунктом 2) ? Функция ShareData мне поможет ? На второй вопрос я Вам уже ответил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:28 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > P.S. Да уж... После Delphi PB смортится какой-то очень громоздкой и > неудобной средой разработки... ((( Глупость года. Впрочем, ожидаемая. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:37 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Локшин Марк2. Придется создавать новое DataWindow в режиме FreeForm, причем SQL запрос к нему прикреплять совершенно не обязательно (можно создать DataWindow типа External) - главное чтобы Resultset SQL запроса совпадал с тем, что объявлено в External DataWidnow. А данные туда/сбда с помощъю RowsMove(...) гонять. Дико извиняюсь... У меня PB версии 8.0. Выбрал File->New->FreeForm->External, появилось окно... Что в поле name мне указать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 16:42 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner Локшин Марк2. Придется создавать новое DataWindow в режиме FreeForm, причем SQL запрос к нему прикреплять совершенно не обязательно (можно создать DataWindow типа External) - главное чтобы Resultset SQL запроса совпадал с тем, что объявлено в External DataWidnow. А данные туда/сбда с помощъю RowsMove(...) гонять. Дико извиняюсь... У меня PB версии 8.0. Выбрал File->New->FreeForm->External, появилось окно... Что в поле name мне указать ? В полях name нужно описать структуру точно такую же как возвращает ваш запрос и указать такие же типы, тогда между DataWindow данные можно перемещать будет при помощи RowsMove(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:19 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Локшин Марк lioner Локшин Марк2. Придется создавать новое DataWindow в режиме FreeForm, причем SQL запрос к нему прикреплять совершенно не обязательно (можно создать DataWindow типа External) - главное чтобы Resultset SQL запроса совпадал с тем, что объявлено в External DataWidnow. А данные туда/сбда с помощъю RowsMove(...) гонять. Дико извиняюсь... У меня PB версии 8.0. Выбрал File->New->FreeForm->External, появилось окно... Что в поле name мне указать ? В полях name нужно описать структуру точно такую же как возвращает ваш запрос и указать такие же типы, тогда между DataWindow данные можно перемещать будет при помощи RowsMove(...) для новичка надо четче формулировать. например так Name, Type, Length надо списать со страницы Column Specification того Datawindow из которого будете делать RowsMove/ShareData. как то так. а то ж он запарится описывать в терминах DW то что запрос возвращает. З.Ы. со временем может научицца делать это через Edit Source ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:30 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Создал в новом окне новый DW с таким же Resultset, поместил его в DW Control в новое окно w_services (w_services.dw_1). В событии doubleclicked первого DataWindow (w_account.dw_1) пишу: Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:30 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerСоздал в новом окне новый DW с таким же Resultset, поместил его в DW Control в новое окно w_services (w_services.dw_1). В событии doubleclicked первого DataWindow (w_account.dw_1) пишу: Код: plaintext 1. Код: plaintext 1. В зависимоти что возвращает RowsCopy... И по-моему нужно писать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:35 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Получилось! При открытии нового окна w_services, отображается первая запись. Желательно конечно, чтобы в w_services.dw_1 сразу показывалась та запись на которой кликнули дважды в окне w_account. Еще бы добавить сюда что-то типа DBNavigator как в Delphi, чтобы передвигаться вперед-назад по набору данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:44 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей З.Ы. со временем может научицца делать это через Edit Source ;-) Как раз через Edit Source и точно прописывал теже типы данных для столбцов ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:48 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Еще одна мелочь: w_account и w_services имеют WindowType = main!, а главное окно программы w_main имеет WindowType = mdihelp!. w_account открывается из меню рамки MDI w_main: Код: plaintext 1. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:07 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > Получилось! При открытии нового окна w_services, отображается первая запись. > Желательно конечно, чтобы в w_services.dw_1 сразу показывалась та запись > на которой кликнули дважды в окне w_account. Если ты сделал отдельную форму для редактирования, занафига тебе все эти RowsCopy() и т.п.? Передавай в неё ID записи, которую ты хочешь редактировать, и внутри запрашивай данные из БД. > типа DBNavigator как в Delphi На PB не нужно писать "как в Delphi", на нём нужно писать "как на PB" ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:08 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > Еще одна мелочь: w_account и w_services имеют WindowType = main! Зачем? Или я не понял, что ты делаешь, или это странное решение. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:10 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Dim2000 Если ты сделал отдельную форму для редактирования, занафига тебе все эти RowsCopy() и т.п.? Передавай в неё ID записи, которую ты хочешь редактировать, и внутри запрашивай данные из БД. Первая форма нужна только для чтения, вторая (по даблклику) - для редактирования. И во второй форме кроме этого DaTaWindow, нужно будет отобразить еще два DataWindow для редактирования (подчиненных первому в отношении один-ко-многим). И в этом же окне нужна навигация вперед-назад, чтобы не делать дабл клик каждый раз чтобы редактировать данные одного абонента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:16 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Dim2000 Зачем? Или я не понял, что ты делаешь, или это странное решение. Posted via ActualForum NNTP Server 1.4 Так написано в книге "PowerBuilder 5.0. Библия разработчика", привожу цитату: "Неважно, какой из четырех типов окна будет выбран для страничных окон. Лучше выбрать главный тип, который присваивается новым окнам по умолчанию. Это дает небольшое преимущество - главное окно легче всего тестировать, независимо от рамки MDI". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:20 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > Первая форма нужна только для чтения, вторая (по даблклику) - для > редактирования. И во второй форме кроме этого DaTaWindow, нужно будет > отобразить еще два DataWindow для редактирования (подчиненных первому в > отношении один-ко-многим). Я правильно понял, что "первая форма" - это список чего-то-там, вторая форма - редактирование данных по одной из записей? > И в этом же окне нужна навигация вперед-назад За 10 лет работы с PB почему-то ни разу не понадобилось ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:38 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > Так написано в книге "PowerBuilder 5.0. Библия разработчика" Мало ли что на сарае написано... своя голова у тебя есть ;)? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:39 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Dim2000 Я правильно понял, что "первая форма" - это список чего-то-там, вторая форма - редактирование данных по одной из записей? Первая форма отображает таблицу абонентов в режиме только для чтения с поиском абонента по лицевому счету. По даблклику на этой записи должна открыться вторая форма с: 1) вверху - данные таблицы абонентов для редактирования (та запись на которой был даблклик и все остальные чтобы были доступны) 2) внизу - грид со списком услуг этого абонента с возможностью редактирования и грид со списком льгот этого абонента с возможностью редактирования. Dim2000 За 10 лет работы с PB почему-то ни разу не понадобилось ;). Без кнопок навигации получилось следующее (вложенный рисунок). По записям можно перемещаться с помощью клавиатуры стрелками вверх-вниз, CTRL-End, CTRL-Home. Это терпимо Вопрос: Как мне отобразить во втором окне не первую запись а ту запись на которой был даблклик ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:30 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:35 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Dim2000 Мало ли что на сарае написано... своя голова у тебя есть ;)? Голова есть у Вас и у меня, но и Вы за 10 лет не написали книгу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:36 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > 1) вверху - данные таблицы абонентов для редактирования (та запись на > которой был даблклик и все остальные чтобы были доступны) > 2) внизу - грид со списком услуг этого абонента с возможностью > редактирования и грид со списком льгот этого абонента с возможностью > редактирования. Ну и сделай это Response Window. > Без кнопок навигации получилось следующее (вложенный рисунок). По > записям можно перемещаться с помощью клавиатуры стрелками вверх-вниз, > CTRL-End, CTRL-Home. Это терпимо Когда-то столкнулся с такой "фичей" в чужом проекте. Изничтожил. > Вопрос: Как мне отобразить во втором окне не первую запись а ту запись > на которой был даблклик ? Передай из первого окна во второе ID абонента. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:53 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lioner wrote: > Вы за 10 лет не написали книгу Я очень не люблю что-либо разжёвывать ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:53 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
Скрипт по даблклик на DW первого окна (в новое окно передаю номер текущей строки): Код: plaintext 1. Код: plaintext 1. 2. Вопрос 2: Можно ли сделать так, чтобы делая даблклик в первом окне развернутом на весь экран, открывалось второе окно и первое при этом оставалось развернутым (а то оно принимает оригинальные размеры) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 11:19 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
lionerВопрос 1: Как мне в Message.PowerObjectParm передать 2 параметра второму окну (getrow() и ссылку на w_account (первое окно)) ? Сделать новую структуру, полям которой можно присвоить 2 параметра и передать эту структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 12:05 |
|
||
|
DataWindow с возможностями поиска по его полям
|
|||
|---|---|---|---|
|
#18+
с каких пор все подались в учителя? 2 lioner для начала почитайте какуюто книгу по ПБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 12:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=15&tid=1336594]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 178ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...