Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Запрос с параметрами для datawindow / 25 сообщений из 60, страница 1 из 3
14.05.2009, 15:19
    #35985778
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
В хелпе нашла только то, что можно передать в retrieve параметры, если они определены у datawindow. Никак по-другому нельзя? У меня уже много форм с datawindow, а теперь посредством параметризованных запросов надо фильтры накладывать..
...
Рейтинг: 0 / 0
14.05.2009, 15:21
    #35985785
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочка пишет:

> В хелпе нашла только то, что можно передать в retrieve параметры, если
> они определены у datawindow. Никак по-другому нельзя?

Нет.

> форм с datawindow, а теперь посредством параметризованных запросов надо
> фильтры накладывать..

Нужно было думать раньше. Теперь - переделывать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.05.2009, 16:17
    #35985981
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
ЛампочкаВ хелпе нашла только то, что можно передать в retrieve параметры, если они определены у datawindow. Никак по-другому нельзя? У меня уже много форм с datawindow, а теперь посредством параметризованных запросов надо фильтры накладывать..
самому формировать запрос и SetSQLSelect
...
Рейтинг: 0 / 0
14.05.2009, 16:18
    #35985991
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
я формирую, допустим, setsqlselect с параметрами, присваиваю его datawindow, а как дальше передать параметры?
...
Рейтинг: 0 / 0
14.05.2009, 16:27
    #35986022
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Сразу вписать в select
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
14.05.2009, 16:35
    #35986044
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
я во всем этом новичок, но уже знаю, что это подвесит сервер - это раз, а кроме того, параметры есть стринговые - как обходить все заковырки вроде кавычки в строке или апострофа?
...
Рейтинг: 0 / 0
14.05.2009, 16:55
    #35986120
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочка пишет:

> я во всем этом новичок, но уже знаю, что это подвесит сервер - это раз,
> а кроме того, параметры есть стринговые - как обходить все заковырки
> вроде кавычки в строке или апострофа?

Поэтому я сразу сказал "нет". Не лезь в то, что ты не осилишь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.05.2009, 16:59
    #35986138
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
тогда я не совсем понимаю, что значит "нет" - что "нельзя" или что "не осилю"?:)
...
Рейтинг: 0 / 0
14.05.2009, 17:04
    #35986162
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
например вместо ретрайва с параметром
Код: plaintext
dw_1.retrieve(sle_1.text)

пишите в скрипте у себя
Код: plaintext
1.
2.
3.
string ls_sql
ls_sql = 'select col_1, col_2 from table where col_3 = ' + sle_1.text
dw_1.SetSQLSelect(ls_sql)
dw_1.retrieve()
ну и конечно dw должна быть без параметров, или по ходу сделать ее без параметров
...
Рейтинг: 0 / 0
14.05.2009, 17:10
    #35986195
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
вот-вот-вот, вот тогда он на кавычке и вывалится)
ну не понимаю я, как же так - почему нельзя передавать параметры в DW по ходу дела, не определяя их заранее??
...
Рейтинг: 0 / 0
14.05.2009, 17:19
    #35986239
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
VanoRнапример вместо ретрайва с параметром
Код: plaintext
dw_1.retrieve(sle_1.text)

пишите в скрипте у себя
Код: plaintext
1.
2.
3.
string ls_sql
ls_sql = 'select col_1, col_2 from table where col_3 = ' + sle_1.text
dw_1.SetSQLSelect(ls_sql)
dw_1.retrieve()
ну и конечно dw должна быть без параметров, или по ходу сделать ее без параметров
Лучше так
Код: plaintext
ls_sql = dw_1.GetSQLSelect() + 'where ' + sle_1.text
...
Рейтинг: 0 / 0
14.05.2009, 17:23
    #35986260
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
не понимаете вы меня..а те, которые поняли, говорят, что нельзя уже ничего сделать)
...
Рейтинг: 0 / 0
14.05.2009, 17:40
    #35986331
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочкавот-вот-вот, вот тогда он на кавычке и вывалится)
ну не понимаю я, как же так - почему нельзя передавать параметры в DW по ходу дела, не определяя их заранее??
не пойму... на какой кавычке?
перед ковычкой можно поставить ~

и, если параметры уже определены в dw, то
сделать dw.Describe("DataWindow.Syntax"), найти там arguments=, поудалять все, и подставить свой select
...
Рейтинг: 0 / 0
14.05.2009, 17:42
    #35986336
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
VanoR найти там arguments=, поудалять все, и подставить свой select
или, если уж так хочется, новые аргументы вставить
...
Рейтинг: 0 / 0
14.05.2009, 17:42
    #35986337
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочкане понимаете вы меня..а те, которые поняли, говорят, что нельзя уже ничего сделать)
А-а так Вы про это? ;)
А может всё-таки разъясните про что? В смысле - что не выходит?
...
Рейтинг: 0 / 0
14.05.2009, 17:45
    #35986345
altero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочка,

dw.Describe("DataWindow.Table.Select") - получить оригинальный синтаксис запроса
и добавлять или отсекать свои параметры через WHERE
далее по help-у.
...
Рейтинг: 0 / 0
14.05.2009, 18:05
    #35986421
Лампочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
ладно, пишу еще раз..может, это я вас не понимаю?:)
у меня dw построено на sql select и нет у него никаких параметров (я просто выбирала в powerbuildere столбцы таблицы).
а теперь необходимо наложить фильтр.
значения для фильтрации задаются пользователем, соответственно - нужно передать в dw запрос, в котором уже будут параметры.
я так поняла, что если нужны параметры - их надо при создании dw определять как retrieval arguments, но у меня уже куча dw, для которых я ничего не определяла.
вопрос в том, можно ли сейчас как-то без пересоздания dw передать им запросы с параметрами (то, что должны быть параметры - это, можно сказать, прописано в ТЗ)?
...
Рейтинг: 0 / 0
14.05.2009, 18:09
    #35986438
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
alteroЛампочка,
dw.Describe("DataWindow.Table.Select") - получить оригинальный синтаксис запроса
и добавлять или отсекать свои параметры через WHERE
далее по help-у.
...
Рейтинг: 0 / 0
14.05.2009, 18:52
    #35986566
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочкане понимаете вы меня..а те, которые поняли, говорят, что нельзя уже ничего сделать)
Перед подстановкой текста литерала в SQL запрос, его надо экранировать - заменить символы имеющие специальное значение на эквивалентные, но безопасные комбинации символов.
В общем случае эта операция зависит от используемой СУБД.
Но если ограничиться кавычками ('), то в большинстве случаев достаточно заменить все кавычки на пары кавычек ('', это не двойная кавычка, а две одиночных)

Для этого у меня например есть специальная функция для квотирования литералов для передачи в Oracle SQL. Она строки берет в кавычки, экранирует внутренние кавычки, в числах заменяет "," на "." чтобы не зависело от региональных настроек, время и дату представляет в нужном формате.
Можете ее доработать для вашей СУБД.
Использовать ее просто:

ls_sql = "select ... where name = " + to_ora(" строка с 'кавычками' ")
на выходе получится
select ... where name = ' строка с ''кавычками'' '
...
Рейтинг: 0 / 0
14.05.2009, 19:45
    #35986664
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Лампочка
Попробуйте оставить всё как есть с DW, а введите фильтр до события dw_1.Retrieve(), например так:
Код: plaintext
dw_1.Object.DataWindow.Table.Filter = "column = 'abc'"
в этом случае в DataWindow после Retrieve() должны попасть только отфильтрованные строки, т.е. такой фильтр работает до попадания строк в DataWindow (в отличии от тандема функций SetFilter() и Filter(), которые фильтруют данные уже находящиеся в DataWindow).
Если для данного DataWindow надо изменить условие фильтра, то придется снова вызвать Retrieve().
...
Рейтинг: 0 / 0
14.05.2009, 19:52
    #35986675
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
AISЛампочка
Попробуйте оставить всё как есть с DW, а введите фильтр до события dw_1.Retrieve(), например так:
Код: plaintext
dw_1.Object.DataWindow.Table.Filter = "column = 'abc'"
в этом случае в DataWindow после Retrieve() должны попасть только отфильтрованные строки, т.е. такой фильтр работает до попадания строк в DataWindow (в отличии от тандема функций SetFilter() и Filter(), которые фильтруют данные уже находящиеся в DataWindow).
Если для данного DataWindow надо изменить условие фильтра, то придется снова вызвать Retrieve().
А это что за бред? ВЕСЬ Result Set попадёт в DataWindow, а то что не удовлетворяет условия фильтра переместится в Filter Buffer. Если преследуется цель ограничить Result Set, то ваше предложение - танцы с бубном ...
...
Рейтинг: 0 / 0
14.05.2009, 20:14
    #35986715
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Филипп
А это что за бред? ...
Это цитата из Help:
Код: plaintext
1.
2.
The Table.Filter property filters the data before it is retrieved.
To filter data already in the DataWindow's buffers,
use the Filter property or the SetFilter and Filter methods.
Я не правильно перевёл?
...
Рейтинг: 0 / 0
14.05.2009, 20:54
    #35986785
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Перевели может и правильно, но сами то пробовали?
...
Рейтинг: 0 / 0
14.05.2009, 21:05
    #35986802
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
ФилиппПеревели может и правильно, но сами то пробовали?
Когда-то пробывал, когда читал Help, но если честно, то в Filter Buffer не заглядывал. 8(
...
Рейтинг: 0 / 0
14.05.2009, 21:29
    #35986841
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами для datawindow
Филипп прав, весь резалтсет будет получен и только после этого отфильтрован.
Глупо получать 100 тысяч ради одной строки
Лампочкая во всем этом новичок, но уже знаю, что это подвесит сервер - это раз
Да уж тяжело когда не знаешь....
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Запрос с параметрами для datawindow / 25 сообщений из 60, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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