Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DataWindow с возможностями поиска по его полям / 25 сообщений из 44, страница 1 из 2
23.07.2008, 14:08
    #35447141
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Здравствуйте! Помогите новичку, на PowerBuilder перехожу с Delphi.
Есть DataWindow, отображающий поля account и adress, при открытии окна в режиме Grid только для чтения. Нужно для него сделать шапку, где вводится значение account, нажимается ENTER и в DataWindow отображаются только записи соответствующие введеному значению account.
1) Как при нажатии ENTER добавить условие WHERE в SQL-запрос DataWindow ?
2) Как отобразить этот же DataWindow в другом окне по двойному клики мышки на любой строке этого DataWindow, но уже в режиме Freeform для редактирования ? Или придется создавать новый DataWindow с таким же SQL-запросом но в режиме Freeform ?
Заранее спасибо.
...
Рейтинг: 0 / 0
23.07.2008, 15:07
    #35447340
Uzrptav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Код: plaintext
где вводится значение account, нажимается ENTER и в DataWindow отображаются только записи соответствующие введеному значению account

Как вариант
Надо поместить на форму SingleLineEdit Control (напр. sle_1) и CommandButton (напр. можно назвать кнопку Enter).
В Sle_1 вводим значение account.
В событии кнопки Clicked и вызвать методы DataWindow SetFilter() и Filter() см. HELP:
Код: plaintext
1.
dw_1.SetFilter(sle_1.text)
dw_1.Filter()

З.Ы. Советую ознакомиться с Help"ом, примерами в комплекте с PowerBuilder, там много чего интересного.
...
Рейтинг: 0 / 0
23.07.2008, 15:16
    #35447372
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Вариант с фильтрами вполне подходит, но есть одно но... В таблице много записей (более 200 тыс.), не хочется тянуть их все на клиента, поэтому используется TOP 100. А фильтр, не производит повторного запроса на сервер, а фильтрует данные клиента.
...
Рейтинг: 0 / 0
23.07.2008, 15:17
    #35447376
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
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(...) гонять.
...
Рейтинг: 0 / 0
23.07.2008, 15:19
    #35447383
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Запрос выглядит так:
Код: plaintext
1.
2.
3.
select account, adress
from account
order by account
Может как то можно передавать параметры в предложение WHERE ?
Хочется получить такое:
Код: plaintext
1.
2.
3.
4.
select account, adress
from account
where account = :account
order by account
А потом в этот :account запихнуть sle_1.text.
...
Рейтинг: 0 / 0
23.07.2008, 15:23
    #35447396
Uzrptav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Метод Retrive()
Код: plaintext
long dwcontrol.Retrieve ( {, any argument, any argument . . . } ) 
...
Рейтинг: 0 / 0
23.07.2008, 15:24
    #35447397
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lionerЗапрос выглядит так:
Код: plaintext
1.
2.
3.
select account, adress
from account
order by account
Может как то можно передавать параметры в предложение WHERE ?
Хочется получить такое:
Код: plaintext
1.
2.
3.
4.
select account, adress
from account
where account = :account
order by account
А потом в этот :account запихнуть sle_1.text.
В режиме редактирования запроса Design/Retrieval Arguments указываете account типа string и свой запрос.
...
Рейтинг: 0 / 0
23.07.2008, 15:24
    #35447398
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
к Локшин Марк:
Не хочется запоминать старый вариант SQL, записывать новый вариант SQL, используя ф-ции GetSqlSelect и SetSqlSelect.
Может быть можно шапку сделать в виде еще одного DataWindow, связать его с моим DataWindow по параметру :account ?
...
Рейтинг: 0 / 0
23.07.2008, 15:34
    #35447443
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Что то не получается...
Отредактировал запрос так:
Код: plaintext
1.
2.
3.
4.
select account, adress
from account
where account = :sle_1.text
order by account
При закрытии окна Select вылазит сообщение: "An argument used in the SELECT is not defined"....
...
Рейтинг: 0 / 0
23.07.2008, 15:40
    #35447461
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lionerЧто то не получается...
Отредактировал запрос так:
Код: plaintext
1.
2.
3.
4.
select account, adress
from account
where account = :sle_1.text
order by account
При закрытии окна Select вылазит сообщение: "An argument used in the SELECT is not defined"....
Еще раз. При редактировании SQL запроса зайдите в меню Design/Retrieval arguments объявите там аргумент account типа string и напишите запрос
Код: plaintext
1.
2.
3.
select account, adress
from account
where account = :account
order by account
После этого в скрипте в своем окне (например при нажатии на большую кнопку "НАЙТИ") написать что-то типа
Код: plaintext
dw_1.Retrieve(sle_1.text)
Пытаться писать что-то типа sle_1.text внутри SQL запроса - в корни неправильно, т.к. это просто текст SQL запроса и ни о каких объектах PowerBuilder'а он не знает.
...
Рейтинг: 0 / 0
23.07.2008, 15:51
    #35447506
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Сделал так:
Код: plaintext
1.
WHERE account like :account
чтобы при вводе "1" находились account = 1, 10, 11 и т.д. Но, like почему то не находит....
...
Рейтинг: 0 / 0
23.07.2008, 15:58
    #35447524
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Локшин Марк
Пытаться писать что-то типа sle_1.text внутри SQL запроса - в корни неправильно, т.к. это просто текст SQL запроса и ни о каких объектах PowerBuilder'а он не знает.
Я читаю книгу PowerBuilder 5.0 Брайана Дж. Смита и Гордона У. Шаада. Они приводят пример встроенного запроса:
Код: plaintext
1.
2.
3.
4.
5.
long ll_hommany
select count(*)
into :ll_hommany
from customer
where lastname = :sle_lastname.text
где sle_lastname.text - обьект класса SingleLineEdit.
...
Рейтинг: 0 / 0
23.07.2008, 16:05
    #35447554
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Может Query mode подойдет?
См. справку по QueryMode DataWindow object property
...
Рейтинг: 0 / 0
23.07.2008, 16:09
    #35447577
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Запарился с "%" в конце like, сори ))) Но все равно PB ругается на конструкцию:
Код: plaintext
1.
WHERE account like ':account%'
...
Рейтинг: 0 / 0
23.07.2008, 16:10
    #35447588
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lioner Локшин Марк
Пытаться писать что-то типа sle_1.text внутри SQL запроса - в корни неправильно, т.к. это просто текст SQL запроса и ни о каких объектах PowerBuilder'а он не знает.
Я читаю книгу PowerBuilder 5.0 Брайана Дж. Смита и Гордона У. Шаада. Они приводят пример встроенного запроса:
Код: plaintext
1.
2.
3.
4.
5.
long ll_hommany
select count(*)
into :ll_hommany
from customer
where lastname = :sle_lastname.text
где sle_lastname.text - обьект класса SingleLineEdit.
Различайте Embeded SQL и запрос в DataWindow и DataStore - это совершенно разные вещи.
...
Рейтинг: 0 / 0
23.07.2008, 16:11
    #35447592
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lionerЗапарился с "%" в конце like, сори ))) Но все равно PB ругается на конструкцию:
Код: plaintext
1.
WHERE account like ':account%'

Потому, что теперь ищется строка :account%
Нужно так
Код: plaintext
1.
WHERE account like :account + '%'
...
Рейтинг: 0 / 0
23.07.2008, 16:12
    #35447595
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Anatoly MoskovskyМожет Query mode подойдет?
См. справку по QueryMode DataWindow object property
К сожалению DataWindow я создавал в режиме Quick Select и не знаю как перевести его теперь в режим Query... Не очень хочется заново создавать DataWindow в режиме Query...
P.S. Да уж... После Delphi PB смортится какой-то очень громоздкой и неудобной средой разработки... (((
...
Рейтинг: 0 / 0
23.07.2008, 16:18
    #35447617
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Локшин МаркНужно так
Код: plaintext
1.
WHERE account like :account + '%'

Сделал именно так ! Может из за того что я в режиме Quick Select и PB не понимает синтаксис ?
Вылетает такая ошибка:
...
Рейтинг: 0 / 0
23.07.2008, 16:26
    #35447663
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Ну наконец-то !!!!!!!!!!!
Запрос такой:
Код: plaintext
1.
2.
3.
4.
select account, adress
from account
where account like :account
order by account
Код события modified j,mtrns sle_1:
Код: plaintext
1.
dw_1.retrieve(this.text+'%')
С пунктом 1) разобрался. Как быть с пунктом 2) ? Функция ShareData мне поможет ?
...
Рейтинг: 0 / 0
23.07.2008, 16:28
    #35447673
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lionerС пунктом 1) разобрался. Как быть с пунктом 2) ? Функция ShareData мне поможет ?
На второй вопрос я Вам уже ответил.
...
Рейтинг: 0 / 0
23.07.2008, 16:37
    #35447710
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lioner wrote:

> P.S. Да уж... После Delphi PB смортится какой-то очень громоздкой и
> неудобной средой разработки... (((

Глупость года. Впрочем, ожидаемая.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.07.2008, 16:42
    #35447731
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Локшин Марк2. Придется создавать новое DataWindow в режиме FreeForm, причем SQL запрос к нему прикреплять совершенно не обязательно (можно создать DataWindow типа External) - главное чтобы Resultset SQL запроса совпадал с тем, что объявлено в External DataWidnow. А данные туда/сбда с помощъю RowsMove(...) гонять.
Дико извиняюсь... У меня PB версии 8.0.
Выбрал File->New->FreeForm->External, появилось окно... Что в поле name мне указать ?
...
Рейтинг: 0 / 0
23.07.2008, 17:19
    #35447861
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
lioner Локшин Марк2. Придется создавать новое DataWindow в режиме FreeForm, причем SQL запрос к нему прикреплять совершенно не обязательно (можно создать DataWindow типа External) - главное чтобы Resultset SQL запроса совпадал с тем, что объявлено в External DataWidnow. А данные туда/сбда с помощъю RowsMove(...) гонять.
Дико извиняюсь... У меня PB версии 8.0.
Выбрал File->New->FreeForm->External, появилось окно... Что в поле name мне указать ?
В полях name нужно описать структуру точно такую же как возвращает ваш запрос и указать такие же типы, тогда между DataWindow данные можно перемещать будет при помощи RowsMove(...)
...
Рейтинг: 0 / 0
23.07.2008, 17:30
    #35447906
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Локшин Марк 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 ;-)
...
Рейтинг: 0 / 0
23.07.2008, 17:30
    #35447907
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataWindow с возможностями поиска по его полям
Создал в новом окне новый DW с таким же Resultset, поместил его в DW Control в новое окно w_services (w_services.dw_1). В событии doubleclicked первого DataWindow (w_account.dw_1) пишу:
Код: plaintext
1.
Open(w_services) // открываю новое окно
В событии open нового окна пишу:
Код: plaintext
1.
dw_1.rowscopy( 1 ,w_account.dw_1.rowcount(),Primary!,dw_1, 1 ,Primary!)
Окно появляется без ошибок, но оно пустое... Строки скопировались ?
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DataWindow с возможностями поиска по его полям / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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