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

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

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

В 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
16.08.2004, 20:46
    #32651766
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SetFilter() для копии поля
Может я чего не понимаю, но если "t_a" и "t_b" суть псевдонимы одной и той же таблицы "t" и выбирается колонка "name", то простите, каким это образом автороператором SELECT в эти поля выбираются разные значения?
Вы может хотели UNION DISTINCT сделать и просто выбрать "name" один раз и спокойно фильтровать по нему? :-)
...
Рейтинг: 0 / 0
16.08.2004, 20:47
    #32651767
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SetFilter() для копии поля
Только что создал новое приложение, с таким же SELECT’ом - все работает.
А в текущем проекте - пока нет. Значит ошибка не здесь.
Вопрос пока снимается.
...
Рейтинг: 0 / 0
17.08.2004, 10:51
    #32652253
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SetFilter() для копии поля
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
17.08.2004, 14:39
    #32652949
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SetFilter() для копии поля
Имеем две таблицы след содержания :
Код: 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
17.08.2004, 14:50
    #32652985
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SetFilter() для копии поля
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
17.08.2004, 15:05
    #32653024
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SetFilter() для копии поля
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
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SetFilter() для копии поля / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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