powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SetFilter() для копии поля
9 сообщений из 9, страница 1 из 1
SetFilter() для копии поля
    #32651753
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В DW есть поле name из таблицы t и копия поля name c именем name_1 , причем оператором SELECT в эти поля выбираются разные значения. Так вот

SetFilter ("name_1 = 'строка' ")

выдает ошибку Expression is not valid , хотя тот же код для поля name работает без проблем.
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32651755
Winnie-the-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Общий подход:
Код: plaintext
1.
2.
3.
string ls_nullfilter
setnull(ls_nullfilter)
dw_1.setfillter(ls_nullfilter)
dw_1.filter()
Появится стандартная PB формочка фильтрации. Добиваетесь работоспособности. Далее - copy/paste... ;-))
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32651761
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит так.

В DW поля имеют имена name и name_1 соответственно,а в стандартной PB формочке фильтрации они ссылаются на два одинаковых поля name

Запрос в DW типа такой

Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT  "t_a"."name" ,
                          "t_b"."name" 
FROM       "t" "t_a" ,
              "t" "t_b" 
WHERE ----// -----

Поэтому как осуществить фильтрацию для меня загадка.
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32651766
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я чего не понимаю, но если "t_a" и "t_b" суть псевдонимы одной и той же таблицы "t" и выбирается колонка "name", то простите, каким это образом автороператором SELECT в эти поля выбираются разные значения?
Вы может хотели UNION DISTINCT сделать и просто выбрать "name" один раз и спокойно фильтровать по нему? :-)
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32651767
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что создал новое приложение, с таким же SELECT’ом - все работает.
А в текущем проекте - пока нет. Значит ошибка не здесь.
Вопрос пока снимается.
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32652253
Winnie-the-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f45fЗначит так.

В DW поля имеют имена name и name_1 соответственно,а в стандартной PB формочке фильтрации они ссылаются на два одинаковых поля name

Запрос в DW типа такой

Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT  "t_a"."name" ,
                          "t_b"."name" 
FROM       "t" "t_a" ,
              "t" "t_b" 
WHERE ----// -----

Поэтому как осуществить фильтрацию для меня загадка.

Я пытался сказать следующее - я не знаю способа честной (с помощью непереоппределенной функции filter()) фильтрации способного на большее, чем filter(null)->filter dialog. Если исходить из этого, то все вопросы о возможностях фильтрации в PB снимаются легко и самостоятельно с помощью вышеупомянутой стандартной формочки. Что не получается с помощью неё сделать - считаем, что сделать невозможно.
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32652949
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем две таблицы след содержания :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
create table #test1 (
  id int,
  group_name varchar( 10 ),
  nam varchar( 10 ))
 -- inserting test data ------------------------------------------------------ 
insert #test1 values( 1 , 'owner' , 'name1')
insert #test1 values( 2 , 'owner' , 'name2')
insert #test1 values( 3 , 'ancest', 'name3')
insert #test1 values( 4 , 'ancest', 'name4')
 -- -------------------------------------------------------------------------- 
create table #test2 (
  id         int,
  id_owner int,
  id_ancestor int)
 -- inserting test data ------------------------------------------------------ 
insert #test2 values( 1 ,  1 ,  3 )
insert #test2 values( 2 ,  1 ,  4 )
insert #test2 values( 3 ,  2 ,  3 )
insert #test2 values( 4 ,  2 ,  4 )
 -- -------------------------------------------------------------------------- 
Оператор селект для dw_1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT 	"#test1_a"."nam",   
         		"#test1_b"."nam"  
  FROM   	"#test2",
	"#test1" "#test1_a",   
        	"#test1" "#test1_b"  
  WHERE  ("#test2"."id_ancestor" = "#test1_b"."id" ) and  
             ("#test1_a"."id" = "#test2"."id_owner")
и код фильтрации рабочий
Код: plaintext
1.
2.
dw_1.SetFilter("test1_nam='name1'")
dw_1.Filter()
и код фильтрации НЕ рабочий
Код: plaintext
1.
2.
dw_1.SetFilter("test1_nam_1='name3'")
dw_1.Filter()

Неужели нельзя сделать фильтрацию по полю test1_nam_1
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32652985
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f45f...
Оператор селект для dw_1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT 	"#test1_a"."nam",   
         		"#test1_b"."nam"  
  FROM   	"#test2",
	"#test1" "#test1_a",   
        	"#test1" "#test1_b"  
  WHERE  ("#test2"."id_ancestor" = "#test1_b"."id" ) and  
             ("#test1_a"."id" = "#test2"."id_owner")
Неужели нельзя сделать фильтрацию по полю test1_nam_1
Вот так можно написать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT 	"#test1_a"."nam" a_nam,   
         		"#test1_b"."nam"  b_nam
  FROM   	"#test2",
	"#test1" "#test1_a",   
        	"#test1" "#test1_b"  
  WHERE  ("#test2"."id_ancestor" = "#test1_b"."id" ) and  
             ("#test1_a"."id" = "#test2"."id_owner")

Код: plaintext
1.
dw_1.SetFilter("b_nam='name3'")
dw_1.Filter()
...
Рейтинг: 0 / 0
SetFilter() для копии поля
    #32653024
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99Вот так можно написать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT 	"#test1_a"."nam" a_nam,   
         		"#test1_b"."nam"  b_nam
  FROM   	"#test2",
	"#test1" "#test1_a",   
        	"#test1" "#test1_b"  
  WHERE  ("#test2"."id_ancestor" = "#test1_b"."id" ) and  
             ("#test1_a"."id" = "#test2"."id_owner")

Код: plaintext
1.
dw_1.SetFilter("b_nam='name3'")
dw_1.Filter()


Точно !!! Так работает. Спасибо.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SetFilter() для копии поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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