Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / филтрация по 2-м комбобоксу / 18 сообщений из 18, страница 1 из 1
05.10.2009, 10:39
    #36232134
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Есть 2 комбобокса. Надо делать фильтрация по значением по этим 2-м комбобокса. Если выбрать какой-то значение на 1-м комбобокса, надо делать фильтрация по этому комбобоксу. Потом если выбрать какой-то значение и на 2-м комбобокса, надо делать фильтрация по этим 2-м комбобоксу. Или наоборот, если выбрат сначала на 2-м комбобоксе делать фильтрацию сначало по этому комбобоксу.
Как можно делать такое?
...
Рейтинг: 0 / 0
05.10.2009, 14:38
    #36232871
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Помогите пожалуйста!
...
Рейтинг: 0 / 0
05.10.2009, 14:56
    #36232927
Ffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Поищите по форуму.
Было много похожих тем.
...
Рейтинг: 0 / 0
05.10.2009, 16:34
    #36233295
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
asd456,
Если фильтрацию надо сделать для таблицы Tab1 по полям Pol1 и Pol2 и эта таблица в форме отображается с помощью Grid, то в Refresh этого Grid поместить код:
Код: plaintext
1.
2.
3.
4.
5.
local fp1,fp2
fp1=thisform.combo1.value
fp2=thisform.combo2.value
sele Tab1
set filter to pol1=fp1 and pol2=fp2

В Valid combo1 и combo2 должен стоять код:Thisform.refresh
...
Рейтинг: 0 / 0
05.10.2009, 16:41
    #36233308
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
LUCIAN

Ваш код работать не будет. Будет сообщение об ошибке об отсутствии переменных памяти. Для такого способа фильтрации необходима макроподстановка значения фильтра.
...
Рейтинг: 0 / 0
05.10.2009, 17:07
    #36233410
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
ВладимирМ LUCIAN

Ваш код работать не будет. Будет сообщение об ошибке об отсутствии переменных памяти. Для такого способа фильтрации необходима макроподстановка значения фильтра.
Тогда такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
local fp1,fp2
fp1=thisform.combo1.value
fp2=thisform.combo2.value
*пусть поля Pol1 и Pol2 типа С,тогда
filter="pol1="+fp1+" and  pol2="+fp2
sele Tab1
set filter to &filter
...
Рейтинг: 0 / 0
05.10.2009, 17:13
    #36233425
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
LUCIAN,
Надо так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[src]local fp1,fp2
fp1=thisform.combo1.value
fp2=thisform.combo2.value
*пусть поля Pol1 и Pol2 типа С,тогда
filter="pol1='"+fp1+"' and  pol2="'+fp2+"'"
sele Tab1
set filter to &filter
[/SRC]
...
Рейтинг: 0 / 0
06.10.2009, 07:23
    #36234167
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Получается "Syntax error" в строке filter="pol1='"+fp1+"' and pol2="'+fp2+"'"
...
Рейтинг: 0 / 0
06.10.2009, 08:22
    #36234209
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
asd456Получается "Syntax error" в строке filter="pol1='"+fp1+"' and pol2="'+fp2+"'"
Господи, запутали человека совсем.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
fp1=thisform.combo1.value
fp2=thisform.combo2.value
*пусть поля Pol1 и Pol2 типа С,тогда
filter1="pol1=fp1"
filter2="pol2=fp2"
sele Tab1
set filter to &filter1 .AND. &filter2
GO TOP
...
Рейтинг: 0 / 0
06.10.2009, 08:41
    #36234222
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Всеравно ошибка получается.
Я сделал так:
Код: plaintext
1.
set filter to &filter1 '+.AND.+' &filter2
 
Но, в этом случае почему то фильтр работает только по 1-му комбобоксу.
...
Рейтинг: 0 / 0
06.10.2009, 10:14
    #36234350
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
asd456Получается "Syntax error" в строке filter="pol1='"+fp1+"' and pol2="'+fp2+"'"
Надо так,только уберите пробелы между ',"
Код: plaintext
filter="pol1=' "+fp1+" ' and  pol2=' "+fp2+" ' "  
...
Рейтинг: 0 / 0
06.10.2009, 10:39
    #36234428
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
asd456Всеравно ошибка получается.
Не знаю, что вы там делаете. Вот элементарный пример :
Код: plaintext
1.
2.
3.
4.
5.
USE dogovor && в таблице символьные поля ndog и name
z1='1'
z2='1111'
f1="ndog=z1"
f2="name=z2"
SET FILTER TO &f1 .and. &f2
...
Рейтинг: 0 / 0
06.10.2009, 10:53
    #36234455
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
LUCIAN, спасибо, получился.
...
Рейтинг: 0 / 0
16.10.2009, 10:51
    #36254954
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
LUCIAN
Надо так,только уберите пробелы между ',"
Код: plaintext
filter="pol1=' "+fp1+" ' and  pol2=' "+fp2+" ' "  


Нет, что-то опять не правильно работает. Правильно работает только тогда когда на обе комбобоксе выбрано значение.
Надо делать фильтрацию по значению и по 1-му комбобоксу (какой выбран), и по значению по 2-м комбобоксу (если выбран обе комбобокс).
Помогите пожалуйста, как можно это делать?
...
Рейтинг: 0 / 0
28.10.2009, 09:40
    #36276241
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Я этот вопрос постарался решить в таком виде (потому что не мог использувать показанными здесь кодами), т.е., хотел все варианты отдельно писать. Но, всеравно не мог подобрать все варианты, напирмер, если выбран какой-то комбобокс, но другой не выбран, в этом случае фильтр не работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
publ fp1, fp2, a1, a2
t1=thisform.text5.value
t2=thisform.text6.value
IF MK= 1 
    fp1=ALLTRIM(thisform.text1.value)
    fp2=alltrim(thisform.text2.value)

   IF a1<> 0  AND a2<> 0 
	filter="TTOD(qebul_ed)>=t1 and TTOD(qebul_ed)<=t2 and dx=dx1 and  mushteri_a=fp1 and kuryer_adc=fp2"
   ENDIF
	
   IF a1<> 0  AND a2= 0 
	filter="TTOD(qebul_ed)>=t1 and TTOD(qebul_ed)<=t2 and dx=dx1 and mushteri_a=fp1"
   ENDIF

    IF a2<> 0  AND a1= 0 
	filter="TTOD(qebul_ed)>=t1 and TTOD(qebul_ed)<=t2 and dx=dx1 and    kuryer_adc=fp2" 
    ENDIF
	sele baza
set filt to ?filter
	GO TOP
ENDIF
...
Рейтинг: 0 / 0
28.10.2009, 14:14
    #36277325
asd456
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
Eсли выбран какой-то комбобокс, но другой не выбран, в этом случае фильтр не работает.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
28.10.2009, 18:32
    #36278098
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
asd456Eсли выбран какой-то комбобокс, но другой не выбран, в этом случае фильтр не работает.
Помогите пожалуйста.
SET FILTER TO я не использую,следующий код я выдрал и переделал под фильтрацию,для того чтобы
он заработал необходимо чтобы предшествовала команда PUBLIC FRAG1,FRAG2 например в Load формы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
	PROCEDURE combo1.Init
		THIS.VALUE=PADR("  ВСЕ", 50 )
		THIS.RowSourceType= 3 
		THIS.RowSource='SELECT DIST PADR("  ВСЕ",LEN(POLUC))  FROM DOKP UNION SELECT DIST POLUC FROM DOKP ORDER BY 1 INTO CURSOR  CPOL'
	ENDPROC


	PROCEDURE combo2.Init
		THIS.VALUE=PADR("  ВСЕ", 50 )
		THIS.RowSourceType= 3 
		THIS.RowSource='SELECT DIST PADR("  ВСЕ",LEN(OTPR))  FROM DOKP UNION SELECT DIST OTPR FROM DOKP ORDER BY 1 INTO CURSOR  COTP'
	ENDPROC

	PROCEDURE combo1.Valid
		frag1=THIS.VALUE
		This.Parent.REFRESH
	ENDPROC

	PROCEDURE combo2.Valid
		frag2=THIS.VALUE
		This.Parent.REFRESH
	ENDPROC


	PROCEDURE grddokp.Refresh
	SELECT DOKP
	SET FILTER TO (FRAG1=PADR("  ВСЕ", 50 ) OR POLUC=FRAG1 ) AND (FRAG2=PADR("  ВСЕ", 50 ) OR OTPR=FRAG2 )
...
Рейтинг: 0 / 0
28.10.2009, 18:38
    #36278108
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
филтрация по 2-м комбобоксу
LUCIAN,

вдогонку В LOAD формы код
Код: plaintext
1.
2.
3.
PUBLIC FRAG1,FRAG2
FRAG1=PADR("  ВСЕ", 50 )
FRAG2=PADR("  ВСЕ", 50 )
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / филтрация по 2-м комбобоксу / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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